2011-04-18 6 views
1

두 모델, 직원 및 부서가 있습니다. 고용은 직책을 통해 부서에 소속됩니다. select 태그에서 직원이있는 부서 만 나열하고 싶습니다.범위가 포함 된 .any?

는 지금은이 : 옵션을 선택 nil을 몇 날 잎

@current_company.departments.collect {|d| [d.title, d.id] if d.employees.any?} 

합니다. 나는 그것이 작동하지 않습니다 실현,하지만 난 무엇을해야하는지에 붙어

scope :with_employees, :where => (self.employees.any?) 

: 나는 current_company.departments.with_employees @처럼 작동 할 depmartments에 대한 범위를 작성할 수 생각했다. 이 옵션을 선택 nil을 필요로하지 않는 경우

scope :with_employees, :joins => :employees 

답변

7

조인 기억은 정확하게 당신이 원하는 않는, 내부 조인입니다 .compact 방법을 사용 하시겠습니까?

@current_company.departments.collect {|d| [d.title, d.id] if d.employees.any?}.compact 
+0

+1 재사용을위한, 뛰어난 선명도, 확장 성, 단순성 및 효율성. –

+0

직원들이 부서에 속한다는 사실을 잊었습니다. => : 직위. 아직도 적용 가능합니까? – Jarrett

+0

잘하면 당신은 이미 그것을 시도하고 네가 조인 테이블을 통해 작동 것을 알게되었습니다. 내 대답을 받아 들일 시간, 나를 먹여라;) – smathy

0

왜 당신은 할 수 ... (가) 범위로 가입 쓰기 -

0

또는 그것을 할 수있는 또 다른 방법 ...

@current_company.departments.reject {|d| d.employees.empty?}.collect {|d| [d.title, d.id]} 

루비의 아름다움은 아무것도 할 수있는 많은 방법이있다)