在我的Rails应用程序中,我有after_update回调。但是,当我的记录首次使用save方法创建时以及使用update_attributes更新时,将执行此回调。
所以我想要一种方法,当它来到更新方法时必须调用回调/方法,但是当它在创建和更新方法时它正在执行。
我认为update_attribute还在内部调用了一个save方法,因为这个问题即将来临。
当记录更新而未保存时,有什么办法可以调用我的钩子。
我找到了一种使用attr_accessors的方法,但我想要一些其他的方法,因为维护这些标志对我的应用来说非常困难
答案 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