Как использовать вычисляемый столбец с before_save в Rails - PullRequest
0 голосов
/ 06 марта 2019

Предположим, у меня есть модель Order с колонками length:decimal, height:decimal и depth:decimal.У меня есть метод модели, который рассчитал объем:

def volume
  length * height * depth
end

У меня есть другой метод, который рассчитал special_volume:

def special_volume
  volume * 2.43
end

Давайте предположим, что мне нужно сейчас, чтобы сохранить это вычисленное поле в базе данныхпоэтому я создаю том: десятичное число и столбец special_volume:decimal.

Я реорганизую свой код для использования before_save следующим образом:

before_save do
  self.volume = set_volume
  self.special_volume = set_special_volume
end

private
  def set_volume
    length * height * depth
  end

  def set_special_volume
    volume * 2.43
  end

Проблема заключается в том, что в методе set_special_volume том илиЗначение self.volume равно nil, поскольку оно все еще не сохранено.

Как использовать этот сценарий использования в Rails?Нужно ли до_сохранения?

...