2012-11-16 2 views
1

나는 이것을 파악할 수 없습니다. 깊은 곳으로 가면 할 수 있어요. (A.joins(:bs).where("bs.paid = TRUE")과 같은 것을 사용)레일스 : 두 번째 하위 특성으로 모델 필터링

그러나 모델 A는 has_many B입니다. B has_one C. 마지막으로 C의 속성은 paid입니다.

나는 A의 모든 것을 얻고 싶습니다. C.paid == true입니다.

이 같은 A.joins({:b, :c}).where("c.paid == True")

답변

1
paid_items = Array.new 

A.bs.each do |b_item| 
    paid_items << b_item if b_item.c.paid 
end 
+0

감사 을,하지만 난 액티브를 사용하여 대답을 찾고 있어요 :

여기
A.joins(:b, :c).where(:conditions => ["c.paid = ?", true]) 

, 그것은 당신이 관심을 가질만한보십시오. – az7ar

+0

가독성은 나에게 매우 중요합니다. 'A.bs'와'b_item.c'는'ActiveRecord'를 사용하고 있습니다. 이렇게하면 더 읽기 쉽습니다. –

+0

현재 귀하의 것과 비슷한 솔루션을 사용하고 있습니다. 하지만 Arel을 사용하면 쉽게 할 수 있다고 생각합니다. – az7ar

관련 문제