首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定模型/嵌套模型中的任何字段是否发生了更改?

问如何确定模型/嵌套模型中的任何字段是否发生了更改?
EN

Stack Overflow用户
提问于 2011-04-11 08:08:53
回答 5查看 29K关注 0票数 43

有没有一些快速的方法来找出一个模型的任何字段或它的嵌套模型的任何字段(也就是关联)已更改?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-11 08:13:45

要查看ActiveRecord对象是否已更改,可以调用:

代码语言:javascript
复制
instance.changed?

要查看特定属性是否已更改,可以执行以下操作:

代码语言:javascript
复制
instance.attr_changed?

其中attr是要检查的属性。

要检查嵌套模型是否发生更改,只需执行以下操作:

代码语言:javascript
复制
instance.nested_model.changed?
票数 83
EN

Stack Overflow用户

发布于 2016-02-26 18:28:53

我知道这是一个老问题,但最近遇到了同样的情况。

即使在保存对象之后,也可以使用previous_changes方法获取嵌套模型的所有更改。

代码语言:javascript
复制
parent_model_object.nested_model_name.previous_changes

这将列出嵌套模型中的所有更改以及旧值和新值。

票数 7
EN

Stack Overflow用户

发布于 2018-12-08 10:18:29

在5.1 +版本中,下面的代码对我来说很有效:

如果您的对象已更改,saved_changes?会让您知道:

代码语言:javascript
复制
my_object.saved_changes?
=> true

saved_changes会让你知道哪些字段发生了变化,每个字段的前值和后值:

代码语言:javascript
复制
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]}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5615594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档