我有一个GiftCategory
模型:
class GiftCategory
include Mongoid::Document
field :gifts_count, type: Integer
has_many :gifts, :inverse_of => :gift_category
end
我有一个Gift
模型:
class Gift
include Mongoid::Document
field :gift_units_count, type: Integer
has_many :gift_units, :inverse_of => :gift
belongs_to :gift_category, :inverse_of => :gifts, :counter_cache => true
after_save :update_counter
def update_counter
self.gift_category_id_change.each do |e|
GiftCategory.reset_counters(e, :gifts) unless e.nil?
end
end
end
该update_counter
方法允许我计算有多少Gift
对象属于一个GiftCategory
. 这样,我可以例如仅查询GiftCategory
具有某些对象的Gift
对象:
GiftCategory.where(:gifts_count.gt => 0)
但正如您所见, aGift
也有一个gift_units_count
字段。该字段记录了可用的数量单位Gift
。如何查询GiftCategory
具有Gift
对象的对象gift_units_count > 0
?
我认为解决方案可能类似于此处描述的内容,但我自己无法接近。