在has_many中通过中间属性查找:在Rails中

时间:2011-09-23 13:53:46

标签: ruby-on-rails many-to-many relationships

  

可能重复:
  Rails has_many :through Find by Extra Attributes in Join Model

我的模型中有以下多对多的设置:

class Project < ActiveRecord::Base
  has_many :projectcollaborations
  has_many :partners, :through => :projectcollaborations, :source => :partner
end

class Partner < ActiveRecord::Base
  has_many :projectcollaborations
  has_many :projects, :through => :projectcollaborations, :source => :project
end

class Projectcollaboration < ActiveRecord::Base
  belongs_to :project
  belongs_to :partner
end

我可以访问:

@partner = Partner.first
@partner.projects
@partner.projectcollaborations.find_by_myrole('creator')
....

现在如何在多对多关系表中访问@partner所有拥有myrole创建者的项目?

1 个答案:

答案 0 :(得分:0)

@collaborations = @partner.projectcollaborations.includes(:projects).find_all_by_myrole('creator')
@projects = @collaborations.map &:project

也许还有另一种更漂亮,更有轨道的方式,但这就是我要做的事情