为什么我不能在Rails的表中创建一个数组作为列?
为什么我不能这样做:
class CreateModels < ActiveRecord::Migration def self.up create_table :fruit do |t| t.array :apples end end end
是否有其他方法可以使数组(“apples”)成为Fruit类实例的属性?
查看关于关联的Rails指南 (特别注意has_many)。
您可以使用数据库支持的任何列类型(使用t.column
而不是t.type
),但如果担心跨DB的可移植性,我相信建议坚持使用activerecord明确支持的类型。
拥抱苹果的水果似乎很有趣,但也许这仅仅是一个例子? (我希望苹果成为水果的子类)。
在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
您可以使用序列化 。 但如果Apple将成为AR对象,请使用关联 。