调用update_attributes后查找哪些字段已更新?

Okt*_*tav 10 ruby-on-rails update-attributes

我想知道在update_attributes语句之后哪些字段已更新.我正在过滤可更新的参数并删除那些我不想更新的参数params[:model].现在,一些新的可更新参数可能具有与旧的相同的值,并且我想知道哪个参数被更新以及哪一个被跳过,因为相同的值.以下是一些代码:

UPDATABLE_PARAMS = ["param1", "param2", "param3", "param4"]
def update
  @dr = DR.find(params[:id])
  authorize! :update, @dr #devise stuff

  hnew = params[:dr]
  hnew.delete_if {|k, v| !UPDATABLE_PARAMS.include?(k.to_s) }

  if @dr.update_attributes(hnew)
    @dr.update_attribute(:last_updated_by, current_user.email)
    @dr.touch
  end

  render :update_result
end
Run Code Online (Sandbox Code Playgroud)

这是棘手的部分:

我想@dr用JSON 渲染对象(但已经设置了),除了标准字段之外,我还想添加一个包含该对象的嵌套对象updated_params.我可以送hnew@hnew,以我的观点,但如果我这样做,我会得到所有的加工参数,可以不只是是不同的人.

我怎样才能获得改变的参数?

Yur*_*hov 39

保存模型时更改的属性的映射.

@dr.previous_changes() 
Run Code Online (Sandbox Code Playgroud)