Ruby on rails 查找调用update_属性后已更新的字段?

Ruby on rails 查找调用update_属性后已更新的字段?,ruby-on-rails,update-attributes,Ruby On Rails,Update Attributes,我想知道update_attributes语句之后更新了哪些字段。我正在过滤可更新的参数,并从参数[:model]中删除我不想更新的参数。现在,一些新的可更新参数可能与旧参数具有相同的值,我想知道哪个参数被更新,哪个被跳过,因为值相同。下面是一些代码: UPDATABLE_PARAMS = ["param1", "param2", "param3", "param4"] def update @dr = DR.find(params[:id]) authorize! :update, @

我想知道update_attributes语句之后更新了哪些字段。我正在过滤可更新的参数,并从
参数[: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
这里是棘手的部分:

我想用JSON呈现
@dr
对象(但已经设置好了),除了它的标准字段之外,我想添加一个嵌套对象,其中包含
更新的参数。我可以将
hnew
作为
@hnew
发送到我的视图,但如果这样做,我将获得所有已处理的参数,而不仅仅是那些不同的参数


如何获取更改的参数?

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

@dr.previous_changes() 

真他妈的好笑。我知道一定有办法。谢谢。最佳做法是通过attr_accessible并使用:as选项分配_属性/update_attributes/new来处理允许的质量分配参数。谢谢viktor。我正在使用attr_accessible,但仅用于新记录。更新具有不同的可访问属性,这取决于其他因素(如两个记录字段值)