我在整个Rails项目中使用MongoID。我基本上有一个像
这样的查询def available_skus
skus.is_active.in_stock.order_by({:discount => :desc}, {:quantity => :desc})
end
它部分指我的Sku
模型中的嵌入式集合范围。
我在那里有以下范围
scope :is_active, -> { where(:status => true) }
scope :in_stock, -> { any_of({:unlimited => true}, {:quantity.gt => 0}) }
scope :can_buy, -> { is_active.in_stock }
我创建can_buy
以避免重复,因为我经常使用is_active.in_stock
并且它具有特定含义; 你可以买这个sku 。
简而言之,如果我写skus.is_active.in_stock
它可以完美地运行并得到一些结果,但是如果我使用 skus.can_buy
那么它就没有结果。
我不明白这里的行为。不是can_buy
是另外两个范围的简单快捷方式吗?