Rails исключают запись с нулевой ассоциацией из метода класса - PullRequest
0 голосов
/ 05 октября 2018

На моей модели предмета у меня есть такой метод:

  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 всегда не равен нулю.

Как исключить записи с нулевой ассоциацией?

1 Ответ

0 голосов
/ 05 октября 2018

Я решил это так:

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...