2012-06-08 5 views
2

아이가있는 것을 찾고 싶습니다. 그래서 주어진 : 나는 어떤 바 또는 어떤 bazes이 FOOS을 얻고 싶은ActiveRecord - 부모 찾기

class Foo < ActiveRecord::Base 
    has_many :bars 
    has_many :bazes 

    scope :is_a_parent ...what goes here?... 

. 물론 원시 SQL (exists (select 1 from bars ...) or exists (select 1 from bazes ...))에서는 모든 것이 가능하지만 yuk입니다.

분명히 any?과 함께 사용하는 방법은 무엇입니까? or 방법은 무엇입니까? SQL을 사용하지 않고 다른 방법으로 그것을 할 수 있습니까?

답변

0

this이 도움이 되나요? 그 이전의 대답은 너의 것의 반대를 찾고있다. (술집이나 바즈가없는 음식)하지만 논리를 뒤집을 수 있어야한다.

+0

이것은 작동하지 않습니다. 각 Foo에 대해 여러 행을 반환하므로 하나의 컬렉션에도 작동하지 않습니다. 어쩌면 AR이이를 해결할 수도 있지만, 위험을 무릅 쓰고 그걸 믿어서는 안됩니다. 어쨌든, 나는 두 개의 자식 컬렉션에 대한 나의 시나리오에 대해 그것이 평평하게 떨어질 것이라고 확신합니다. –

0
class Foo < ActiveRecord::Base 
    has_many :bars 
    has_many :bazes  

    scope :is_a_parent, (joins(:bars) or joins(:bazes)).uniq 

는 "?"로 끝나야합니다, 일반적으로 "IS_"로 시작하는 기능, 당신에게 줄 또는 baze Btw는

을 가진 모든 FOOS을 줄 것이며, 거짓/유일하고 진정한 반환해야합니다.

관련 문제