有没有办法撤销/恢复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"
> c.changes.each {|k,vs| c.send("#{k}_reset!")}
原文地址:https://www.jb51.cc/ruby/266224.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。