爲什麼我不能做這樣的事情:爲什麼我不能在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
有一些其他方法,使一個數組(「蘋果)是水果類的實例的屬性
退房的Rails guide on associations(特別注意的has_many)。
你可以使用任何列鍵入數據庫支持的類型(使用t.column
而不是t.type
),但如果需要考慮跨數據庫的可移植性,我相信建議您堅持使用activerecord明確支持的類型。
看起來有點有趣的水果have_many蘋果,但也許這只是一個例子? (我期望蘋果是水果的一個子類)。
您可以使用? serialize。但是,如果蘋果將是一個AR對象,請使用associations。
在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
小心,SQL99包括陣列,但我不知道如何得到廣泛支持,他們是( PostgreSQL至少支持它們)。 –
@mu太短:謝謝,我不知道SQL99中的陣列支持。如果我正在閱讀規範,它們僅限於內置數據類型,所以你仍然無法擺脫一大堆蘋果。 – cam
但是你將能夠擺脫一系列蘋果ID。我不知道陣列受到廣泛支持的程度,畢竟SQL99只有12年的歷史,而數據庫供應商並沒有那麼快地轉向可移植性和基於標準的系統:) –