0

型号:类别

class Category < ActiveRecord::Base
   has_and_belongs_to_many :postings
   has_and_belongs_to_many :volunteers
end

型号:张贴

class Posting < ActiveRecord::Base
   has_and_belongs_to_many :categories
   has_many :volunteers, :through=>:signed_postings
end

型号:志愿者

class Volunteer < ActiveRecord::Base
   has_and_belongs_to_many :categories
   has_many :postings, :through=>:signed_postings
end

现在这是我要解决的问题。

我想找出志愿者感兴趣的类别的所有帖子。志愿者可能对多个类别感兴趣,并且发布的帖子可能被分配了多个类别。

附加信息

我还有另一个模型 SignedPosting:

class SignedPosting < ActiveRecord::Base

  belongs_to :volunteer
  belongs_to :posting

end

现在,按照jdoe在志愿者模型中的建议添加关联has_many 张贴, :through=> :categories, uniq=> :true后,我有两个从志愿者到发布模型的has_many 关联,但具有不同的:through

我不知道如何解决这个问题,因为 rails 对同一模型的两个 has_many 关联不满意。

4

1 回答 1

1

你可以加:

# in Volunteer class
has_many postings, through: :categories, uniq: :true

然后只需调用:

Volunteer.find(1).postings

解决冲突

发生碰撞时(如果您已经有postingsassoc.),请执行以下操作:

# name 'postings_via_cats' isn't obligation. Name it as you want.
has_many postings_via_cats, through: :categories, source: :postings, uniq: :true 
                 ---------                        -----------------     
于 2012-06-11T16:10:28.790 回答