在Ruby中,如何编写一个ActiveRecord命名作用域来查找自反层次结构的根节点?

时间:2013-06-25 02:57:08

标签: ruby activerecord self-join named-scope

我已定义ItemType如下:

class ItemType < ActiveRecord::Base
  validates_presence_of :name
  validates_uniqueness_of :name
  has_many :items
  has_many :children, :class_name => 'ItemType', :foreign_key => :parent_id
  belongs_to :parent, :class_name => 'ItemType'

  scope :roots, where("parent IS NULL")
end

但命名范围无效。

我应该如何编写此范围以返回没有父项的ItemType,即树根。

1 个答案:

答案 0 :(得分:0)

经过一些反复试验后,我发现scope :roots, where(:parent_id => nil)工作正常。