У меня есть модель PositionGroup
, которая has_many :positions
.
Когда бы ни была добавлена или сохранена позиция, я хочу обновить атрибут на PositionGroup
. Например, когда новая позиция была добавлена к PositionGroup
, я хотел бы добавить position.volume
к существующей position_group.total_units
.
Итак, рассмотрим следующий пример:
pg.total_units = 100
position2.volume = 50
# then pg.total_units should be updated to:
pg.total_units = 150
Я понимаю, что могу сделать это с помощью обратного вызова ассоциации, и это нормально.
Проблема в том, что происходит, когда я хочу обновить объем предыдущей позиции. Если я добавлю before_save
или after_save
, то этот обратный вызов также будет запущен после срабатывания обратного вызова after_add
- таким образом, искусственно раздувая цифру pg.total_units
.
Как мне решить эту проблему