10

我想知道在 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

这是棘手的部分:

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

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

4

1 回答 1

39

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

@dr.previous_changes() 
于 2012-06-18T11:58:09.087 回答