我有一个ActiveRecord对象。它使用父对象的嵌套属性进行更新。问题是它有一些非数据库字段,如果设置需要触发after_save事件。我遇到的问题是,如果没有更新数据库属性,则after_save永远不会触发,但我需要它。
ActiveRecord.partial_updates = false
是我应用中的默认设置。拯救永远不会发生......
我尝试更新updated_at = DateTime.now
并且它不会触发要保存的记录。只有当其中一个属性获得更新时,保存才会实际触发。
注意Rails 2.3.8
答案 0 :(得分:1)
虽然我没有对其进行测试,但包含ActiveModel::Dirty
并告知其非数据库字段可能允许ActiveRelation
选择它们。
更多信息:http://railsapi.com/doc/rails-v3.0.3/classes/ActiveModel/Dirty.html
答案 1 :(得分:1)
基本上我手动为非数据库属性创建了一个setter,并调用了id_will_change!
,这使整个对象变脏。这符合我的需要。