Вот модели:
class SellRecord < ApplicationRecord
has_one :bill, as: :billable, touch: true
end
class Bill < ApplicationRecord
belongs_to :billable, :polymorphic => true, :touch => true
after_commit :callbacks, :on=>[:update]
def callbacks
puts self.saved_changes
end
end
Я сделал что-то вроде этого:
bill = Bill.last
bill.update!({deal_amount: rand})
# { :deal_amount=>[ 0, 0.3 ], :updated_at=>[time, time] }
Отлично. Я могу знать, если deal_amount
изменяется.
НО, если я записываю свой код следующим образом:
# get bill from relation SellRecord . Not by Bill.last or Bill.find
bill = SellRecord.last.bill
bill.update!({deal_amount: rand})
# { :updated_at=>[time, time] }
Я не могу получить изменения deal_amount
. На самом деле, я уверен, что это изменилось.
Rails 6.0.2.1