は、なぜ私はこのような何かを行うことはできません。Railsのテーブルで列を配列として作成できないのはなぜですか?
class CreateModels < ActiveRecord::Migration
def self.up
create_table :fruit do |t|
t.array :apples
end
end
end
フルーツクラスのインスタンスの属性である(「りんご)配列を作るためにいくつかの他の方法はあり
は、なぜ私はこのような何かを行うことはできません。Railsのテーブルで列を配列として作成できないのはなぜですか?
class CreateModels < ActiveRecord::Migration
def self.up
create_table :fruit do |t|
t.array :apples
end
end
end
フルーツクラスのインスタンスの属性である(「りんご)配列を作るためにいくつかの他の方法はあり
(has_manyのに特に注意を払う)Rails guide on associationsをチェックしてください。
あなたは、任意の列を使用することができます(t.type
の代わりにt.column
を使用してください)。データベース間の移植性が懸念される場合は、activerecordで明示的にサポートされているタイプに固執することをお勧めします。
果物にはhave_manyリンゴが面白いようですが、それは単なる例ですか? (私は、果物が果物のサブクラスであることを期待しています)。
レール4にあなたが使用することができます? serialize。しかし、Appleはassociationsを使用して、ARオブジェクトであることを行っているか。
、あなたが実際にDBに配列型を使用することができますPostgreSQLの使用:
移行:
class CreateSomething < ActiveRecord::Migration
def change
create_table :something do |t|
t.string :some_array, array: true, default: []
t.timestamps
end
end
end
慎重に、SQL99のアレイを含むが、私は、彼らが(サポートされている方法を広く知っていませんPostgreSQLは少なくともそれらをサポートしています)。 –
@muが短すぎます:ありがとう、私はSQL99の配列のサポートを認識していませんでした。私が仕様書を読んでいるのであれば、ビルトインのデータ型に限られているので、まだリンゴの配列を手に入れることはできません。 – cam
しかし、リンゴのIDの配列を取得することができます。私はどのくらい幅広くサポートされている配列があるのか分かりませんが、SQL99は12年しか経っていませんし、データベースベンダーは移植性と標準ベースのシステムに移行するのに速くはありません:) –