为什么我不能在Rails中的表中创建数组作为列?

ste*_*ble 5 ruby arrays ruby-on-rails rails-migrations

为什么我不能这样做:

class CreateModels < ActiveRecord::Migration
  def self.up
    create_table :fruit do |t|
      t.array :apples
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

是否有其他方法可以使数组("apples")成为Fruit类实例的属性?

Ada*_*ite 21

在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
Run Code Online (Sandbox Code Playgroud)


cam*_*cam 2

查看Rails 关联指南(特别注意 has_many)。

您可以使用数据库支持的任何列类型(使用t.column而不是t.type),但如果考虑跨数据库的可移植性,我相信建议坚持使用 activerecord 明确支持的类型。

水果有很多苹果似乎很有趣,但这也许只是一个例子?(我希望苹果是水果的一个子类)。