私はモデルを持ってい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 がありますが、スーパーアイテムはすでに破棄されている可能性があります。だから私はクラスメソッドでそれをしなければなりません
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
スコープで同じ結果を達成することは可能ですか? または、あなたは何をしますか?