当前位置:  开发笔记 > 前端 > 正文

正确的防止Rails中重复记录的方法

如何解决《正确的防止Rails中重复记录的方法》经验,为你挑选了3个好方法。

在我的模型中,我有这个:

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 }
...

如果表中没有此名称的记录,则会成功创建记录.我认为在插入可能重复的记录而不是依赖数据库约束之前检查是一个好习惯吗?

我想我应该向控制器添加一些东西来检查?这样做的正确方法是什么?

非常感谢.



1> MrTheWalrus..:

在记录到达数据库之前,Rails会进行验证.如果记录未通过验证,则它将不会保存,.save并将返回false,这将导致else控制器的子句执行.该子句通常会重新呈现已提交的页面,并显示错误,以便更正它们.

假设您的控制器是这样构建的,您不需要做任何其他事情.当然,您应该确保在验证中镜像任何数据库约束,否则记录可能会通过验证,但会在保存时违反约束而产生错误.



2> Salil..:

您无需在控制器中执行任何操作.

The correct way to prevent duplicate records in Rails is used 
validation in model which you did correctly.



3> Teddy..:

在数据库中添加唯一索引.这样,如果某些内容滑过模型验证(很少见,但技术上可行),保存到数据库的查询将失败.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有