2017-11-16 4 views

답변

-1

'모든 어린이는 상태가 있습니다.'는 일반적으로 훨씬 어렵습니다! 나는 복잡한 조인 함께 할 수있는 방법이있을거야,하지만 쉽게 루비 방법은 다음과 같이 할 수 있습니다 :

parents = [] 
Parent.includes(:children).find_each do |parent| 
    parents.push(parent) if parent.children.collect{|child| child.field.nil?}.reduce(:&) 
end 
+0

이, 특히 효율적인 아니다. 차라리 시간이 좀 걸릴 것이고 SQL 솔루션을 개발할 것입니다. –

+0

네, 확실히 최적으로 효율적은 아니지만 때로는 가독성이 진정한 효율성이라는 데 동의합니다 :) 분명히 미끄러운 슬로프가 있습니다. 모든 아이들을 결합하여 하나의 DB 임에도 불구하고 O (n * m) 쿼리 – ted

+0

또한 @MarekLipka가 N + 1 문제를 해결하는 포함해서는 안됩니까? – ted

0

하면 자식 테이블에 가입 한 다음 attribute_to_test 인 전무를 확인 할 수 있습니까? 이 N + 1 문제를 포함하고 있기 때문에

@nillish_parents = Parent.joins(:children).where("child.attribute_to_test IS ?", nil)

@nillish_parents.each do |p| 
    p.name 
end