У меня есть модель счета-фактуры, которая "имеет много" элементов счета.У меня есть форма, которая позволяет вам создавать / редактировать счет-фактуру, и эта форма принимает вложенные атрибуты для элементов счета-фактуры.
В моей модели счета-фактуры есть поле «total_amount», которое является вычисляемым полемсумма «сумма» из позиций счета).
Я хочу рассчитать эту сумму при создании или обновлении счета.Я пытаюсь сделать это в событии before_save моей модели счета.Приведенный ниже код почти работает, однако общее количество сохраненных всегда на шаг позади.То есть, если у меня есть счет на общую сумму 20 долларов, и я редактирую этот счет и изменяю элементы счета на общую сумму 15 долларов, а затем сохраняю свой счет, общая сумма не изменяется.Если я открою тот же счет-фактуру и затем сохраню его снова, итоговая сумма будет обновлена правильно.
Я предполагаю, что моя строка ниже, которая рассчитывает сумму, обращается к позициям, уже сохраненным в базе данных, а нете, которые были только что изменены и будут сохранены.Однако я не знаю, как получить к ним доступ.
class Invoice < ActiveRecord::Base
has_many :invoice_items, :dependent => :destroy
accepts_nested_attributes_for :invoice_items, :allow_destroy => true
before_save :record_total_amount
private
def record_total_amount
self.total_amount = self.invoice_items.sum('amount')
end
end
Любая помощь будет высоко ценится.