0
我有一個模型,它具有返回記錄的(唯一)名稱的覆蓋to_param方法。這工作得很好,但有一個警告 - 用戶可以編輯名稱。用戶可編輯的to_param值
如果我有記錄#1名=「ABC」和記錄#2名=「XYZ」,然後在用戶編輯記錄#2和更改名稱爲「ABC」將在保存作爲validates_uniqueness_of得到一個錯誤約束被違反。但是,當Rails再次構造edit.html.erb頁面時,它會使用未經驗證的數據 - 包括to_param,它現在將所有內容鏈接到記錄#1(「abc」)。因此,節省的存款因此在記錄#1而不是記錄#2上行動。
什麼是建議的最佳實踐,以防止這種可怕的結果?我應該在重定向一個錯誤之前重置名稱值(但是如果名稱正確並且錯誤位於其他地方),還是應該更改我的視圖以手動插入id而不是使用Rails自動處理?