在我的模型中我有这个:
validates :name, :presence => true, :uniqueness => true
在我的控制器中我有:
...
if @location.save
format.html { redirect_to @location, :notice => 'Location was successfully created.' }
format.json { render :json => @location, :status => :created }
...
如果表中尚不存在具有此名称的记录,则会成功创建记录。我认为在插入可能重复的记录之前进行检查是一种很好的做法,而不是依赖数据库约束?
我想我应该在控制器中添加一些东西来检查?这样做的正确方法是什么?
非常感谢。
在记录到达数据库之前,Rails 会完成验证。如果记录未通过验证,则不会保存,并且.save
将返回false
,这将导致else
要执行的控制器的子句。该子句通常会重新呈现已提交的页面,并显示错误以便可以更正。
假设您的控制器是这样构建的,您不需要做任何其他事情。当然,您应该确保任何数据库约束都反映在验证中,否则记录可能会通过验证,但在保存时会因违反约束而产生错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)