通过在的has_many中介属性查找:通过Rails的
问题描述:
可能重复:
Rails has_many :through Find by Extra Attributes in Join Model通过在的has_many中介属性查找:通过Rails的
我有以下多对多建立在我的模型:
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
的所有项目,在my-to-many关系表中有myrole创建者?
答
@collaborations = @partner.projectcollaborations.includes(:projects).find_all_by_myrole('creator')
@projects = @collaborations.map &:project
也许还有另外一个,漂亮,railsier的方式,但是这是我怎么会做它
您的关联和类名请使用正确的大小写:即'project_collaborations',不'projectcollaborations'和'ProjectCollaboration',而不是'Projectcollaboration'。这使得你的代码更容易读取所有涉及的内容。 –
你得到我的问题吗? –