为什么我不能在 Rails 中创建数组作为表中的列?
为什么我不能做这样的事情:
class CreateModels < ActiveRecord::Migration
def self.up
create_table :fruit do |t|
t.array :apples
end
end
end
是否有其他方法可以使数组(“苹果”)成为 Fruit 类实例的属性?
Why can't I do something like this:
class CreateModels < ActiveRecord::Migration
def self.up
create_table :fruit do |t|
t.array :apples
end
end
end
Is there some other way to make an array ("apples) be an attribute of an instance of the Fruit class?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 Rails 4 和使用 PostgreSQL 中,您实际上可以在数据库中使用数组类型:
迁移:
In Rails 4 and using PostgreSQL you can actually use an array type in the DB:
Migration:
查看 Rails 关联指南(特别注意 has_many)。
您可以使用数据库支持的任何列类型(使用
t.column
而不是t.type
),尽管如果跨数据库的可移植性是一个问题,我相信建议坚持使用 activerecord 明确支持的类型。水果有很多苹果似乎很有趣,但这也许只是一个例子? (我希望苹果是水果的一个子类)。
Check out the Rails guide on associations (pay particular attention to has_many).
You can use any column type supported by your database (use
t.column
instead oft.type
), although if portability across DBs is a concern, I believe it's recommended to stick to the types explicitly supported by activerecord.It seems kind of funny for fruit to have_many apples, but maybe that is just an example? (I would expect apples to be a subclass of fruit).
您可以使用序列化。但如果苹果要成为 AR 对象,请使用关联。
You may use serialize. But if an Apple is going to be an AR object, use associations.