У меня есть модель 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
Можно ли достичьте же результаты с областями применения?Или что бы вы сделали?