На моей модели предмета у меня есть такой метод:
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.Для некоторого элемента это значение равно нулю.
Следовательно, если я запускаю метод, я получаю:
undefined method `quantity' for nil:NilClass
В модели ItemMovement у меня есть
scope :sales, -> { where(reason: -1) }
, которая фильтрует движения элементаэто продажи.Для этих движений элемент unit_sell всегда не равен нулю.
Как исключить записи с нулевой ассоциацией?