当从由嵌套属性更新的子级触发更改时,Saved_changes ActiveRecord方法返回空白值时遇到问题。
给出以下两个模型:
[[1]]
[1] 1 2 3 4
[[2]]
[1] 1
[[3]]
[1] 2
[[4]]
[1] 3
[[5]]
[1] 4
lis <- list()
lis[2:5] <- as.list(vec)
lis[[1]] <- vec
这些行为上的差异发生了:
class Customer < ApplicationRecord
enum status: {inactive: 0, active: 1, paused: 2}, _prefix: :status
has_many :customer_pauses
has_many :contracts
after_save :handle_status_change
protected
# UNEXPECTED BEHAVIOR HAPPENS HERE!!!
def handle_status_change
puts "CHANGED STATUS??? #{saved_change_to_status?}"
puts saved_changes
puts "--------------------"
if saved_change_to_status?
contracts.where(status: saved_change_to_status.first).update status: status
end
end
end
我不确定为什么会发生这种情况,这是预期的行为还是Rails中的错误?
对嵌套子项的回调是否不会导致对其父项的更改?