2012-07-06 1 views
1

:가계 - 아이들없이 모든 부모를 얻는 방법? 나는 이런 식으로 일을 오전

@disabled_options = [] 
Category.where('ancestry is NULL').each do |cat| 
    @disabled_options << cat.id if cat.has_children? 
end 

는 자녀가없는 모든 부모를 얻을 수있는 더 우아한 방법이 있나요?

+0

모두 '부모'(자녀가있는 모든 카테고리) 또는 '부모'가없는 모든 카테고리 ('모든 카테고리')를 찾고 싶으십니까? –

+0

자녀가있는 모든 카테고리 – user984621

답변

1
Category.where("id IN (SELECT parent_id FROM categories)") 

가정하면 parent_id은 상위 카테고리를 가리키는 필드입니다.

"parent_id"를 사용하여 가리키는 범주를 선택하므로 자식이있는 경우 "parent_id"가 설정되므로 "parent_id"가 참조하는 범주에는 자식이 있습니다.

1

이 한 줄짜리 도움이 될 것입니다.

Category.where(id: Category.pluck(:ancestry).compact.map { |e| e.split('/') }.flatten.uniq)