祖先 - 如何让没有孩子的所有父母?

时间:2012-07-06 17:06:22

标签: ruby-on-rails ancestry

我这样做:

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

有没有更优雅的方式让没有孩子的所有父母?

2 个答案:

答案 0 :(得分:2)

这个单行可能对你有帮助。

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

答案 1 :(得分:1)

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

假设parent_id是指向父类别的字段。

这将选择使用“parent_id”指向的那些类别,因此如果有子项,则子项将设置“parent_id”,因此“parent_id”引用的类别具有子项。