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自动处理?