我想知道在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
这是棘手的部分:
我想在JSON中呈现@dr
对象(但已经设置好了),除了标准字段之外,我还想添加一个包含updated_params
的嵌套对象。我可以将hnew
作为@hnew
发送到我的视图中,但如果我这样做,我将获得所有已处理的参数,而不仅仅是那些不同的参数。
如何获得更改的参数?
答案 0 :(得分:39)
保存模型时更改的属性的地图。
@dr.previous_changes()