我有两个具有以下关联的模型:
organization.rb
class Organization < ActiveRecord::Base
has_one :user, as: :identifiable
has_many :speakers
#has_many :cast_items
end
speaker.rb
class Speaker < ActiveRecord::Base
has_one :user, as: :identifiable
#has_many :cast_items
end
正如您所看到的,我已经注释掉了与CastItem模型的关联。 我想让一个Speaker添加多个CastItems。此外,组织必须能够添加多个CastItem。当组织添加CastItem时,它不一定属于与组织关联的Speaker。 换句话说,组织必须能够将CastItem添加到自身或与他关联的演讲者。
将has_many :cast_items
置于两个模型中是否完全有效,或者是否有更实际的设计选项?
答案 0 :(得分:2)
是的,你可以这样做。请务必将organization_id
和speaker_id
添加到您的cast_items
模型中。
您可以查看此链接http://guides.rubyonrails.org/association_basics.html,了解有关多对多和一对多关联的一些有用信息。
就个人而言,我将使用has_many :through
答案 1 :(得分:0)
你绝对可以做到。我想不出有什么不好的理由,而且往往是必要的。
您可能想要在创建CastItems时查找“委托”方法,并让它们始终由组织创建。
另外,如果你的CastItem上有一个:speaker_id,它可以接受nil或false。