Rails从类方法中排除具有空关联的记录

时间:2018-10-05 07:04:09

标签: ruby-on-rails

在我的商品模型上,我有以下方法:

  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。

如何排除关联为空的记录?

1 个答案:

答案 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