Ruby on rails 如何在活动记录模型中获取更新参数&x27;什么是回电?

Ruby on rails 如何在活动记录模型中获取更新参数&x27;什么是回电?,ruby-on-rails,activerecord,model,callback,Ruby On Rails,Activerecord,Model,Callback,是否可以获得已分配/更新的参数列表 在保存之前,我不想从回调中获取已更改属性的列表,而是想获取通过任何方式分配的属性列表(直接分配然后保存或通过更新属性方法) 谢谢 更新 例如: p = Person.new( name: 'Bob') p.update_attributes( {:name, 'Bob'} ) 在更新\u属性后的回调中: name_changed? # return false 我想获得一个指定属性的列表,如: attr_assigned # returns somethi

是否可以获得已分配/更新的参数列表

在保存之前,我不想从
回调中获取已更改属性的列表,而是想获取通过任何方式分配的属性列表(直接分配然后保存或通过
更新属性
方法)

谢谢

更新

例如:

p = Person.new( name: 'Bob')
p.update_attributes( {:name, 'Bob'} )
更新\u属性后的回调中:

name_changed? # return false
我想获得一个指定属性的列表,如:

attr_assigned # returns something like {:name => 'Bob'} or so
更新2:

这是我的模特的现场表演

wl = WhiteLabel.last
wl.footer_text # "dfgdfgdfgdf"
wl.footer_text = "dfgdfgdfgdf"
wl.save

147: def on_subscription_update
148:    return if !valid? || back
149: 
=> 150:     binding.pry
151: 
152:    filter_out_postponed_attributes
153:    create_new_card_from_token      if stripe_card_token.present?
154:    update_subscription                 if user.stripe_customer_id && (subscription_type_id_changed? || !subscription_token)
155:    session_store = nil if last_step?
156: end

changed # []
changes # {}
我也尝试了
wl.update_属性({:footer_text=>“dfgdfgdf”})
。同样的结果


我是否缺少文档中的某些内容?

模块提供的功能使您能够访问更改的属性

record.changes        # => {"name" => ["Bill", "Bob"]}
您还可以测试单个属性

record.name = 'Bob'
record.changed?       # => true
record.name_changed?  # => true
record.name_changed?(from: "Uncle Bob", to: "Bob") # => true
record.name_was       # => "Uncle Bob"
record.name_change    # => ["Uncle Bob", "Bob"]
record.name = 'Bill'
record.name_change    # => ["Uncle Bob", "Bill"]

基本上,当您更新_属性时,它会将您请求的更改提交到数据库中,所以更改数组变为空。如果您想在这种情况下跟踪更改,请在保存回调之前使用,它将告诉您所有更改。

谢谢您,Simone!但我正在寻找一个可以让我这样做的功能:我在问题中添加了一些示例,请阅读我链接的文档。方法
#changed
为您提供了您想要的答案。请阅读我链接的文档。方法
#changed
为您提供了您想要的答案。谢谢!我实际上是在保存回调之前跟踪中的更改。您所指的确切方法是什么?如果您只想检查是否有字段更改,那么使用更改的函数,它将返回数组。如果需要值,则使用更改,它将返回值从更改为的哈希值。