ruby-on-rails - 在 Rails 中识别记录/对象是否脏

标签 ruby-on-rails ruby ruby-on-rails-3 activerecord

我有没有办法在保存之前确定一个对象/记录是否脏,以及在 Rails 中更改了哪些字段?

例子

假设我有一个 Person 模型,Person 有一个名为 name 和 age 的属性。在数据库中,id 为 1 的人名为“John”,年龄为 20。

p = Person.find 1
p.name #John
p.age #20

现在,当我将他的名字从 John 更改为 Nathan 时,我有什么办法可以识别

  1. 对象被改变(脏)
  2. 哪些字段发生了变化

现在我知道第一个问题的答案了。如果我将他的名字改为 Nathna,我可以执行以下操作

p.name = "Nathan"
p.changed? #true

但是,我是否可以确定更改了哪个字段?可能是一种返回已更改字段数组的方法?

p.dirty_fields #[:name]

最佳答案

关于ruby-on-rails - 在 Rails 中识别记录/对象是否脏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211693/

相关文章:

ruby-on-rails - 如何用简单的形式定义 Action ?

javascript - Rails 4 - javascript 文件未在生产中加载但在本地运行良好。 (英雄)

ruby-on-rails - rails : For each Array giving Error?

ruby - 如何在 Cucumber 中使用 "skip"标记场景?

arrays - sort_by 哈希数组未在 ruby​​ 中给出预期结果

ruby-on-rails-3 - 为每个页面设置唯一的元关键字时出现问题

ruby-on-rails - PostsController 中的 ActiveModel::ForbiddenAttributesError#create

ruby-on-rails - Rails 如何处理方法名称不友好的枚举值?

ruby-on-rails - rails : FATAL: Password Authentication Failed For User

android - 使用 Rails 后端向 Android 发送推送通知时出现 InvalidRegistration 错误