У меня есть модель счета-фактуры, в которой "много" элементов счета-фактуры. У меня есть форма, которая позволяет вам создавать / редактировать счет, и эта форма принимает вложенные атрибуты для элементов счета.
В моей модели счета есть поле "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
Любая помощь будет принята с благодарностью.