我有一个模型Item
,它与自身有关。
class Item < ActiveRecord::Base
has_many :subitems, :class_name => "Item", :foreign_key => "superitem_id"
belongs_to :superitem, :class_name => "Item"
end
我想查询所有有父项的项目。首先,我尝试检查 parent_id 是否存在Item.where("superitem_id != ?", false)
,或者类似的东西。但它不起作用。尽管该项目具有 superitem_id,但 superitem 可能已经被销毁。所以我必须用类方法来做
def self.with_superitems
items = []
self.find_each do |i|
items << i if i.superitem
end
return items
end
但它使链接成为不可能,我想用类似的方法链接它,比如
def self.can_be_stored
items = []
self.find_each do |i|
items << i if i.can_be_stored?
end
return items
end
是否可以使用范围实现相同的结果?或者你会怎么做?