Предположим, у меня есть модель 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?Нужно ли до_сохранения?