在模型中更新了哪些属性

时间:2010-02-19 11:07:29

标签: ruby-on-rails activerecord

有没有办法可以知道我的模型中更新了哪些属性?我只想在发布某个属性时对用户进行验证。这实际上是通过参数发送的哈希值 例如:

@user.update_attributes(params[:user])

感谢。

1 个答案:

答案 0 :(得分:3)

这在ActiveRecord::Dirty模块中可用,默认包含该模块。

changed方法会为您提供未保存更改的属性列表。 changes方法将为您提供未保存更改的哈希值,其中键是属性名称,值是由原始值和新值组成的数组。

例如:

@user.changed # => ['name', 'age']  
@user.changes # => { 'name' => ['Bill', 'John'], 'age' => [18, 21] }