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