Rails:许多父母之一

时间:2014-08-28 01:20:11

标签: ruby-on-rails ruby ruby-on-rails-3 has-many-through has-many

如果我的模型可以属于其他十个模型中的一个,我是否需要在模型中使用十个不同的_id属性,每条记录留下九个空白?或者有更好的方法来安排它吗?

感谢。

2 个答案:

答案 0 :(得分:2)

正如Jakub建议的那样,您可以使用polymorphism,如下所示:

class Bar < ActiveRecord::Base
  belongs_to :foo, polymorphic: true
  ...
end

class Foo1 < ActiveRecord::Base
  has_many :bars, as: :foo
  ...
end

class Foo2 < ActiveRecord::Base
  has_many :bars, as: :foo
  ...
end

...

class Foo9 < ActiveRecord::Base
  has_many :bars, as: :foo
end

这将使用id表中的单个bars属性,但包含一个额外的类型字段,以指定它所引用的foo类型。

答案 1 :(得分:1)

多态关联怎么样?如果你需要一个属于许多其他模型的模型。那么你只需要_id和_type,它不会是空的。http://guides.rubyonrails.org/association_basics.html#polymorphic-associations

我在模型中需要十个不同的_id属性,每条记录留下九个空白? - 没有