5

なぜ私はこのようなことをすることができないのですか?

class CreateModels < ActiveRecord::Migration
  def self.up
    create_table :fruit do |t|
      t.array :apples
    end
  end
end

配列(「リンゴ」)をFruitクラスのインスタンスの属性にする他の方法はありますか?

4

3 に答える 3

24

Rails 4 で PostgreSQL を使用すると、実際に DB で配列型を使用できます。

移行:

class CreateSomething < ActiveRecord::Migration
  def change
    create_table :something do |t|
      t.string :some_array, array: true, default: []
      t.timestamps
    end
  end
end
于 2014-03-24T16:04:40.620 に答える
2

関連付けに関する Rails ガイドを確認してください(has_many に特に注意してください)。

データベースでサポートされている任意の列タイプを使用できます (t.columnの代わりに使用しますt.type)。ただし、DB 間の移植性が懸念される場合は、activerecord で明示的にサポートされているタイプに固執することをお勧めします。

果物にりんごがたくさんあるのはちょっとおかしなことですが、これは単なる例でしょうか? (リンゴは果物のサブクラスになると思います)。

于 2011-07-06T22:38:09.967 に答える
2

serializeを使用できます。ただし、Apple を AR オブジェクトにする場合は、associationsを使用してください。

于 2011-07-06T22:34:58.923 に答える