2012-07-06 90 views
1

我這樣做是這樣的:祖先 - 如何讓所有父母沒有孩子?

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

有沒有更優雅的方式來獲得無子女的所有父?

+0

你想查找所有的'父母'(所有有孩子的分類)還是你想找到所有'根'(所有沒有父母的分類)? – 2012-07-06 17:43:06

+0

所有有孩子的類別 – user984621 2012-07-06 17:54:49

回答

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) 
相關問題