请教,代码如下,我需要记录 product 表的字段变更历史,就用了 mongoid 提供的 after_update 方法,但是在保存前取到的 self 的字段都是更新过的,没办法就添加了 set_old_product 的方法,在 controller 里设置,在 set_old_product 里打印的值还是变更前的没问题,可执行到 after_update 时就@old_product就变成变更后的了,set_old_product 这个方法只被调用了一次,是不是我的变量使用方法不对?感觉@old_product只是存了 product 的指针一样
class Product
include Mongoid::Document
include Mongoid::Timestamps
field :name, type: String
field :state, type: String
has_many :product_events, :after_add => :after_add_handler, :dependent => :destroy
after_update do |product|
puts "=============== #{@old_product.state}, #{product.state}" #到这里前后两个值就变成一样了
end
def set_old_product(product)
@old_product = product.attributes
puts "=============== #{@old_product.state}" #这里打印的值还是对的
end
def create_events
......
end
end