我想知道update_attributes语句后哪些字段已经更新。我正在过滤可更新的参数,并删除那些我不想从params[:model]
更新的参数。现在,一些新的可更新参数可能与旧参数具有相同的值,我想知道哪些参数已更新,哪些参数由于相同的值而被忽略。下面是一些代码:查找调用update_attributes后哪些字段已更新?
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
对象(但已设置),此外它的标准字段,我d想添加一个包含updated_params
的嵌套对象。我可以发送hnew
作为@hnew
给我看,但如果我这样做,我会得到所有加工参数,不只是那些不同。
我怎样才能得到改变的参数?
最佳做法是通过attr_accessible处理允许的质量分配参数,并使用:作为assign_attributes/update_attributes/new的选项。 –
谢谢viktor。我正在使用attr_accessible,但仅限于新记录。更新有不同的可访问attrs取决于其他因素(如几个记录字段值) – Oktav