为什么我不能在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对象,请使用关联 。