【发布时间】:2011-09-20 00:43:50
【问题描述】:
我有一个 Product 对象,其中包含许多 InventoryCurrent 对象。每月将汇总一次所有库存交易,并为每个仓库中的每个产品创建一个新的 InventoryCurrent 记录。这样做是为了使系统不必在每次请求当前库存时都进行数百次计算。 我创建了一个 from_warehouse 范围如下:
scope :from_warehouse, lambda {|warehouse| where(:warehouse_id =>warehouse) }
我想拨打电话获取当前库存如下:
product.current_inventories.from_warehouse(2).recent
这应该返回最新的 InventoryCurrent,或者如果尚未创建一个(因为刚刚添加了产品),那么它应该返回一个新的 InventoryCurrent 对象,并设置了正确的warehouse_id 和 product_id。
问题是作用域返回一个记录集,而不是单个对象。我不能将此作用域放在方法中并调用 .first ,因为如果记录集为空,这可能会产生错误。
有什么建议吗?
【问题讨论】:
标签: ruby-on-rails scope