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

发布于 2024-11-18 16:57:41 字数 222 浏览 7 评论 0原文

为什么我不能做这样的事情:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凶凌 2024-11-25 16:57:41

在 Rails 4 和使用 PostgreSQL 中,您实际上可以在数据库中使用数组类型:

迁移:

class CreateSomething < ActiveRecord::Migration
  def change
    create_table :something do |t|
      t.string :some_array, array: true, default: []
      t.timestamps
    end
  end
end

In Rails 4 and using PostgreSQL you can actually use an array type in the DB:

Migration:

class CreateSomething < ActiveRecord::Migration
  def change
    create_table :something do |t|
      t.string :some_array, array: true, default: []
      t.timestamps
    end
  end
end
说谎友 2024-11-25 16:57:41

查看 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 of t.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).

寻梦旅人 2024-11-25 16:57:41

您可以使用序列化。但如果苹果要成为 AR 对象,请使用关联

You may use serialize. But if an Apple is going to be an AR object, use associations.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文