确定Rails中的记录/对象是否脏

时间:2011-08-27 00:16:03

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

在我保存之前是否存在对象/记录是否脏以及Rails中哪些字段发生了变化?

实施例

假设我有一个Person模型,而Person有一个名为name和age的属性。在db中,id为1的Person在20岁时被命名为“John”。

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

现在,当我将他的名字从约翰改为内森时,我有什么方法可以识别

  1. 对象被更改(脏)
  2. 以及哪些字段已更改
  3. 现在我知道第一个答案。如果我将他的名字更改为Nathna,我可以执行以下操作

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

    但是,无论如何,我是否确定哪个字段已更改?可能是一个返回已更改的字段数组的方法吗?

    p.dirty_fields #[:name]
    

1 个答案:

答案 0 :(得分:8)