在我的商品模型上,我有以下方法:
def sold_units
(self.item_movements.sales.sum(:quantity) / self.unit_sell.quantity)
end
单位出售是指出售商品的单位,例如克或千克,属于单位。
belongs_to :unit_sell, :class_name => 'Unit', :foreign_key => 'sell_unit', optional: true
unit_sell.quantity是参考单位的数量。基本上,该方法将出售的单位转换为参考单位。
并非每个商品都有unit_sell。对于某些项目,该值为null。
因此,如果我运行得到的方法:
undefined method `quantity' for nil:NilClass
在我拥有的ItemMovement模型上
scope :sales, -> { where(reason: -1) }
过滤作为销售的物料移动。对于这些移动,项目unit_sell始终不为null。
如何排除关联为空的记录?
答案 0 :(得分:0)
我这样解决了:
def sold_units
item_unit_sell_quantity = self.unit_sell.present? ? self.unit_sell.quantity : 0
(self.item_movements.sales.sum(:quantity) / (item_unit_sell_quantity))
end