ruby-on-rails – 如何恢复/撤消对Activerecord对象的本地更改?
发布时间:2020-12-16 22:16:42 所属栏目:百科 来源:网络整理
导读:有没有办法撤销/恢复Activerecord对象的任何本地更改.例如: user = User.firstuser.name # "Fred"user.name = "Sam"user.name_was # "Fred"user.revertuser.name # "Fred" 我知道我可以做user.reload,但我不应该打数据库来做这个,因为旧的值存储在对象的状
有没有办法撤销/恢复Activerecord对象的任何本地更改.例如:
user = User.first user.name # "Fred" user.name = "Sam" user.name_was # "Fred" user.revert user.name # "Fred" 我知道我可以做user.reload,但我不应该打数据库来做这个,因为旧的值存储在对象的状态. 优选地,Rails 3溶液. 解决方法
您可以循环浏览“更改”并重置它们.可能有一种方法可以做到这一点,但是我没有看到.
> c = Course.first > c.name => "Athabasca Country Club" > c.name = "Foo Bar" => "Foo Bar" > c.changes => {"name"=>["Athabasca Country Club","Foo Bar"]} > c.changes.each {|k,vs| c[k] = vs.first} > c.name => "Athabasca Country Club" 其实看起来有一个“name_reset!”你可以调用的方法 > c.changes.each {|k,vs| c.send("#{k}_reset!")} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |