ruby on rails after_update回调挂钩问题

时间:2012-03-13 06:47:37

标签: ruby-on-rails ruby callback ruby-on-rails-2

在我的Rails应用程序中,我有after_update回调。但是,当我的记录首次使用save方法创建时以及使用update_attributes更新时,将执行此回调。

所以我想要一种方法,当它来到更新方法时必须调用回调/方法,但是当它在创建和更新方法时它正在执行。

我认为update_attribute还在内部调用了一个save方法,因为这个问题即将来临。

当记录更新而未保存时,有什么办法可以调用我的钩子。

我找到了一种使用attr_accessors的方法,但我想要一些其他的方法,因为维护这些标志对我的应用来说非常困难

2 个答案:

答案 0 :(得分:1)

这个怎么样

after_update do |model| 
  model.name = model.name.capitalize unless model.new_record?
end

答案 1 :(得分:0)

只有在更新模型后才会调用

after_update。要在创建模型时调用它,必须在模型上调用.save后更新其属性。 .update_attribute.update_attributes不是模型的创建,它实际上是更新模型。 .update_attribute在内部调用.save方法。调用.save来保存模型的状态,新的或更新的。当您调用它时,ActiveRecord会将新状态写入数据库。创建或更新模型时,始终通过.save method

完成