2011-09-23 2 views
1

가능한 중복 :
Rails has_many :through Find by Extra Attributes in Join Modelhas_many의 중간 속성으로 찾기 : 레일에 통한을

내가 가지고있는 나의 모델에서 많은 설정에 많은 다음

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') 
.... 

이제 many-to-many 관계 테이블에서 myrole 생성자를 갖는 @partner의 모든 프로젝트에 액세스 할 수 있습니까?

+1

내가 그것을 할 거라고하는 방법이다 : 즉'project_collaborations'가 아닌'projectcollaborations' 및 'ProjectCollaboration'이 아니라'ProjectCollaboration'. 이렇게하면 관련된 모든 사람들이 코드를 훨씬 더 쉽게 읽을 수 있습니다. –

+0

내 질문이 생겼어? –

답변

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

어쩌면 또 다른, 더 예뻐, railsier 방법이있다, 그러나 이것은 당신의 협회 및 클래스 이름에 대한 올바른 케이스를 사용하십시오