是否可以在Rails中与一个特定模型建立多个has_many关联?

时间:2014-02-27 22:20:18

标签: ruby-on-rails ruby-on-rails-4

我有两个具有以下关联的模型:

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置于两个模型中是否完全有效,或者是否有更实际的设计选项?

2 个答案:

答案 0 :(得分:2)

是的,你可以这样做。请务必将organization_idspeaker_id添加到您的cast_items模型中。

您可以查看此链接http://guides.rubyonrails.org/association_basics.html,了解有关多对多和一对多关联的一些有用信息。 就个人而言,我将使用has_many :through

答案 1 :(得分:0)

你绝对可以做到。我想不出有什么不好的理由,而且往往是必要的。

您可能想要在创建CastItems时查找“委托”方法,并让它们始终由组织创建。

另外,如果你的CastItem上有一个:speaker_id,它可以接受nil或false。