在before_save中获取当前变量Rails

时间:2010-09-12 16:04:10

标签: ruby-on-rails model

有没有办法获得当前变量? 假设我在方法中有一个“title”属性,我想用变量的旧值检入?

我怎么能做到这一点?

2 个答案:

答案 0 :(得分:10)

ActiveRecord提供了一整套处理“Dirty”属性的方法。

在您的情况下,您可以致电title_was以获取该变量的最近保存版本

答案 1 :(得分:0)

如果您想知道所有已更改的属性及其旧值,可以使用 changed_attributes 方法,该方法将返回包含所有已更改属性及其先前值的哈希值(请注意哈希内容可以是在保存新对象之前检索。)

假设您有一个具有old_name标题的对象:

a = YourModel.where(:title => "old_name")
a.title = "new_title"
a.changed_attributes

结果将是“: { “标题”=> “中OLD_NAME”}

但保存更改后:

a.save
a.changed_attributes

结果将为空哈希: {}