Zab*_*bba 40 activerecord ruby-on-rails-3
有没有一些快速的方法可以找出模型的任何字段或其嵌套模型(也称为关联)的任何字段是否发生了变化?
Mik*_*wis 78
要查看ActiveRecord对象是否已更改,您可以调用:
instance.changed?
Run Code Online (Sandbox Code Playgroud)
要查看特定属性是否已更改,您可以执行以下操作:
instance.attr_changed?
Run Code Online (Sandbox Code Playgroud)
其中attr是您要检查的属性.
要检查嵌套模型是否已更改,您可以执行以下操作:
instance.nested_model.changed?
Run Code Online (Sandbox Code Playgroud)
小智 6
我知道这是一个老问题,但最近遇到了同样的情况.
previous_changes即使在保存对象后,您也可以使用方法获取嵌套模型的所有更改.
parent_model_object.nested_model_name.previous_changes
Run Code Online (Sandbox Code Playgroud)
这将列出嵌套模型中的所有更改以及旧值和新值.
使用 5.1 + 以下内容对我有用:
saved_changes? 将让您知道您的对象是否已更改:
my_object.saved_changes?
=> true
Run Code Online (Sandbox Code Playgroud)
saved_changes 会让你知道哪些字段发生了变化,每个字段的前值和后值:
my_object.saved_changes
=> {"first_name"=>['Jim', 'Jimmy'], "updated_at"=>[Thu, 06 Dec 2018 18:45:00 UTC +00:00, Thu, 06 Dec 2018 18:52:44 UTC +00:00]}
Run Code Online (Sandbox Code Playgroud)