用before_save发回变量

时间:2011-12-27 04:34:15

标签: ruby-on-rails ruby

好的我正在尝试创建一个before_save来检查字段是否发生变化并将其返回到像这样的变量中

if @user.update_attributes(params[:user]) 
  send_email_update(@user)
  logger.info @changed

在模型中我有一个保存之前

 before_save :check_changes

 def check_changes
   @changed = self.changed
 end

有没有办法以任何方式执行此操作...基本上使用更改的字段发回变量,或者是否有关于如何处理此类内容的建议

1 个答案:

答案 0 :(得分:1)

使用ActiveModel::Dirty.previous_changes()

params[:user] = { 'name' => 'Bob' }
if @user.update_attributes(params[:user]) 
  send_email_update(@user)
  logger.info @user.previous_changes  # => { 'name' => ['Bill', 'Bob'] }