2013-05-17 3 views
0

다음 모델이있는 Rails 앱이 있습니다. emp 그룹은 작업 그룹과 직원 간의 다 대다 관계를위한 것입니다.활성 레코드를 사용하여 다 대다 관계가있는 레코드를 선택하십시오.

employee.rb

has_many :empgroups 
    has_many :workgroups, through: :empgroups 

empgroup.rb

belongs_to :employee 
    belongs_to :workgroup 

나는 직원이 속한 작업 그룹에 할당 workorders의 인덱스 목록을 싶습니다

has_many :empgroups 
    has_many :employees, through: :empgroups 
    has_many :workorders 

workgroup.rb .

나는이 일하는 것이 기대했다,하지만하지 않았다 :

current_user.employee.workgroups.workorders.each do 

그것은 내게 준 :

undefined method `workorders' 

그래서, 나는 joins 노력하고있어,하지만 그것이 작동하지 않습니다 다음 중 하나를

Workorders.joins(:workgroups => :employees).where(employee_id = current_user.employee).each do 

감사합니다!

답변

0

당신은 모든 workorders을 통해 작업 그룹을 수집하고 반복해야합니다

current_user.employee.workgroups.each |group| do 
    group.workorders.each do 
    ... 
    end 
end 
+0

감사합니다. 작동합니다! – DBurton

0

편집 - 우, 내가 무엇을 생각했다. 이처럼

:

@employee_workorders = Workorder.joins(workgroups: employees).where(employees: { id: current_user.employee }) 

current_user.employee.workgroups.map(&:workorders).flatten.uniq 

는 당신에게 workorders의 배열을 제공해야합니다.

관련 문제