1

データベーステーブルの1つに10列(pile_1からpile_10)があるRubyonRailsアプリを開発しています。モデル内のこれらの列に10要素の配列としてアクセスすると便利です。

composed_of自分のやりたいことを強要できるはずなのに、どうしたらいいのかわからない。誰かが私を啓発したり、より良い戦術を提案したりできますか?

4

2 に答える 2

6

だろう

def piles
    (1..10).map{ |num| self[ "pile_#{ num }"]}
end

十分ではありませんか?

于 2010-01-06T15:08:55.137 に答える
2

スキーマを変更する権限があるので、変更する必要があります。配列を個別の列としてテーブルに格納することは非正規化されます。スキーマが正規化されているかどうかは重要ではないかもしれませんが、現在の問題は非正規化されたスキーマの直接の結果です。

あなたがすべきことは、そのように新しいテーブル、山を作成することです。私が知っているのはpostgres構文を使用するからです。現在、すべてのパイル*列が含まれているテーブルの名前がわからないため、「foo」と呼びます。

create table piles (
  id serial primary key,
  foo_id int not null references foo(id),
  value text not null,
);

現在fooにあるすべての列は、代わりに山の行として存在します。杭のモデルに、次を追加します。

belongs_to: foo

fooのモデルに、次を追加します。

has_many: piles

コントローラーでは、fooを手に入れたら、次の方法でその山にアクセスできます。foo.piles

于 2010-01-06T19:50:13.977 に答える