Странное поведение в рельсах обратных вызовов ActiveRecord - PullRequest
0 голосов
/ 18 апреля 2020

Вот модели:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...