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

2024-04-11

在我的模型中我有这个:

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(使用前将#替换为@)

Rails中防止重复记录的正确方法 的相关文章

  • 对于所有 mime 类型,仅respond_to format.js

    我有一个响应 format js 的控制器 但是 大多数请求假设旧的 format html 仍然存在并抛出 404 异常 如何捕获控制器上的所有 MIME 请求并将它们仅重定向到 format js 这是当前控制器的操作 def sear
  • ruby:类实例变量与实例变量

    我的想法是为来自不同国家的人们创建一个社区维基java因为读了很多解释 我无法理解任何东西 直到我真正尝试了一些东西 拼图的各个部分开始找到它们的位置 但我首先需要确保我做对了 来自这样的背景 我很困惑地发现 variable可能意味着两个
  • 关联的标签参考

    Rails 为固定装置中的关联提供标签参考 如下所示 in pirates yml reginald name Reginald the Pirate monkey george in monkeys yml george name Geo
  • 两列 Jekyll 布局,用标签分隔?

    我目前正在 Jekyll 博客上工作 我想将我的 Markdown 文件采用以下格式 div class row div class col md 6 div div class col md 6 div div 我希望我的代码块在一列中
  • Rails 路由:向 root 添加(浅层)关注

    在我的routes rb中 我定义了一个问题 如下所示 concern namespaceable do resources comments do resources replies 现在 我可以将此问题添加到任何资源中 resource
  • 是否仍然可以在 Rails 4 中使用测试单元?

    从 Rails 3 2 升级到 Rails 4 后 我的应用程序可以运行 但我用测试单元编写的测试是一场灾难 据传 Minitest 与测试单元 兼容 然而 如果我尝试使用 现在捆绑的 Minitest 就会发现有很多差异 从断言 语句名称
  • ActiveStorage::FileNotFoundError 但文件确实存在

    我正在开发这个 Rails 6 0 21 应用程序 ruby 2 5 5 并使用 puma 3 12 2 作为开发 Web 服务器和具有本地磁盘服务的 ActiveStorage 我的应用程序时不时地出错ActiveStorage File
  • 国家/地区的下拉菜单

    您好 我想为国家和州实现下拉菜单 州下拉列表应根据所选国家 地区更改其值 有没有任何插件或 gem 可以在 Rails 中执行此操作 尝试卡门插件 http autonomousmachine com posts 2009 4 1 carm
  • 我可以使用 ActiveRecord 与 Hstore 中的字段的关系吗?

    我可以使用 hstore 哈希中的字段通过活动记录 own to 将一个模型与另一个模型绑定吗 我将详细说明 我有一个用户模型 它根据权限通过 STI 在其字段之一上子类化为许多不同的其他用户模型 class User lt ActiveR
  • 如何在 Rails 中对不同用户建模

    Question 我有一个带有内置授权和身份验证逻辑的用户模型 现在我意识到我拥有三种不同类型的用户 我想存储每个人的不同信息 Rails 中处理这个问题的最佳方法是什么 基于当前阅读的想法 我看过 STI 但从我读到的内容来看 它是不合适
  • 用于从 Open3.popen3 标准输出中提取值的正则表达式

    如何获取外部命令的输出并从中提取值 我有这样的事情 stdin stdout stderr wait thr Open3 popen3 path foobar configfile if exit 0 wait thr value to s
  • Mac 上的 libv8 (3.11.8.17) 捆绑包安装错误

    我将 ruby 升级到 1 9 3 现在我无法启动我的服务器 当我运行捆绑安装时 它说 An error occurred while installing libv8 3 11 8 17 and Bundler cannot contin
  • 导轨、定制探测器

    所以我希望能够使用来获取一个对象find by id or name 我觉得我看到了另一个这样的问题 但很难找到任何资源来制作我自己的查找器 您可以通过向模型添加类方法来做到这一点 例如 class Model lt ActiveRecor
  • 加载新的 Turbo Frame 时如何执行 JavaScript

    我在 Rails 应用程序中使用 Turbo Frames 并且在每个页面上都有
  • 后端验证轨

    如何验证文本列不包含网站 示例可以是 www google com google com http gooogle com http www google com https www google com https google com
  • 哈米尔评论结束

    我是哈米尔新手 这让我很困惑 我不喜欢删除可以注释掉的代码 但我不知道如何在 haml 中正确结束注释 这是一个代码片段 field f label member id br f text field member id field f l
  • ActiveRecord::Enum - PG::InvalidTextRepresentation:错误:整数输入语法无效:

    我遇到了一个奇怪的错误 希望有人能指出我正确的方向 我有一个名为 组织 的模型和一个名为 组织 的属性department 请参阅下面的架构摘录 t integer department default 0 在我的模型内部已经定义了这个属性
  • Rails apns 用于向 Apple ipad 推送通知 - 使用哪个 gem?

    我希望从 Rails 3 0 3 应用程序向苹果推送通知 我发现了各种 apns ish 宝石 包括 apns on rails 其中一些似乎有点旧 1 或 2 年 并且非常不清楚 2012 年使用的 当前 是什么 根据我的标准 您能推荐使
  • 通过sprocket动态渲染sass文件

    我想从助手那里渲染一些变量 scss erb模板使用了image url 萨斯函数 template scss erb background image image url 到目前为止 ERB 部分很简单 利用这个堆栈溢出答案 https
  • 为什么这段 Ruby 代码无法写入日志文件?

    一旦脚本被守护 记录器就无法再写入文件 那么我应该如何以及何时初始化日志呢 require rubygems require daemons require logging def create new logger logger Logg

随机推荐

  • PHP:如何检查一年中的季节并相应地设置类别

    我有一个网站 它在标题区域使用 4 种不同的背景图像 这些图像在视觉上对应于耳朵的季节 夏季 秋季等 对于夏季时间框架 我使用一张图像 对于秋季时间框架 使用另一张图像 依此类推 问题是 一旦一年中的季节发生变化 我就必须手动更改这些图像
  • 使用office.js进行office加载项开发时,无法在word文档的书签中插入文本

    我正在开发一个 word 插件 主要任务是使用数据库中的数据填充文档中的书签 在 office js 中 我发现书签可以作为范围对象进行访问 并且我正在使用 rangeObject insertText text insertLocatio
  • wpf c# 按钮等待按钮按下

    好吧 我是编码初学者 所以我想做的是按钮谁会等待用户单击多个其他按钮之一以继续 void Mainbutton the program run throw so method Wait for the user to choose one
  • 了解 htaccess 文件匹配代码

    我正在尝试将 drupal 安装在我的 bluehost 托管网站的子目录中 这是一个巨大的痛苦 我认为 htaccess 中的以下几行是问题所在 当我当前导航到 mysite com subdir install php 时 出现 403
  • SML 中的 'a 和 ''a 有什么区别?

    例如 fun example a a list list a 将有以下签名 a list gt a list 如果我定义不同但内容相同怎么办 例如 fun example a a list list a 它的签名是 a list gt a
  • Android 手持设备和穿戴设备收不到消息

    我正在尝试从可穿戴设备向手持设备发送消息 然后从手持设备向可穿戴设备发送响应 两个模块都使用相同的代码和逻辑 Gradle compile com google android support wearable 2 0 0 alpha2 c
  • 图像数据类型 SQL Server 2008 C# 数据类型

    我创建了一个数据表 CREATE TABLE ProductImages ProductImageID int IDENTITY 1 1 NOT NULL ProductImage image NOT NULL CONSTRAINT PK
  • 设置属性“system.windows.resourcedictionary.deferrablecontent”引发异常

    我正在运行 Visual Studio 2012 当我向项目添加新文件 引用时 会出现消息框并显示错误消息 设置属性 system windows resourcedictionary deferrablecontent 引发异常 我读了一
  • Linux:如何对系统内存施加负载?

    我正在开发一个小功能 它可以让我的用户了解 CPU 的占用情况 我在用着cat proc loadavg 它返回众所周知的 3 个数字 我的问题是 当我正在开发时 CPU 目前没有做任何事情 有没有一种好方法可以在CPU上产生一些负载 我在
  • iOS 不使用[电子邮件受保护]

    我有 3 张图片 test png email protected cdn cgi l email protection email protected cdn cgi l email protection 在IBOutlet中 设置一个U
  • 如何绘制高分辨率图表

    我使用 matplotlib 绘制了一些实验结果 在这里讨论过 循环文件并绘图 https stackoverflow com questions 39676294 looping over files and plotting pytho
  • 计算非凸多面体的外向法线

    如果多面体的所有节点 可能是非凸的 及其坐标已知 面的点按顺序给出 绕外法线逆时针或顺时针 如何获得每个面的外法向量脸 这是凸多面体的一种方法 计算面法线和缠绕 https stackoverflow com questions 40454
  • 使用 Angular CLI 命令安装 Bootstrap 时如何解决依赖冲突?

    我尝试使用 CLI 命令在我的 Angular 应用程序中安装 Bootstrap ng 添加 ng bootstrap ng bootstrap 但我得到了以下错误回报 使用 Angular CLI 命令安装 Bootstrap 时如何解
  • NHibernate 中的延迟加载

    如果客户有很多订单 如何使用 NHibernate 延迟加载订单列表 是不是需要设置映射文件 任何帮助或例子都会很棒 克里斯的建议是我如何做到这一点 但是如果您想在运行时执行此操作 您可以根据您的标准将 Fetchmode 设置为惰性 如下
  • 忽略忽略属性

    我们有 MSTest 测试 它会在每小时的生产中自动运行 其中一项测试标有 Ignore 属性 因为它还没有准备好在我们的生产环境中运行它 现在我想 仅 在我的本地环境上启动该测试 因为我的本地环境已准备好进行该测试 我尝试通过单击测试代码
  • 将 select 的背景颜色设置为 JQuery 中选定的选项

    这个问题的后续 在 JQuery 中设置选择选项的背景颜色 https stackoverflow com questions 5065167 setting background color of select options in jq
  • FluentMigrator 失败的迁移不回滚?

    我刚刚开始尝试流利迁移器 http github com enkari fluentmigrator readme 我注意到失败的迁移不会被回滚 这还没有实施吗 这看起来相当糟糕 因为它使数据库处于损坏状态 例如 当第二次尝试添加 Tabl
  • 当窗口未最大化时缺少 WM_NCLBUTTONUP 消息的奇怪问题

    我有一个处理 WM NCLBUTTONUP 消息的窗口 以便处理标题栏中自定义按钮的点击 当窗口最大化时 这非常有效 但当窗口未最大化时 WM NCLBUTTONUP 消息永远不会到达 不过我确实收到了 WM NCLBUTTONDOWN 消
  • 对于连接到单个服务器的多个客户端,我应该使用哪种双向 ZeroMQ 模式?

    我有多个 数千个 客户端连接到单个服务器并发送一些日志数据 服务器分析数据并在必要时做出响应 PUB SUB是一个方向 监视器示例 REQ REP无法识别对等方并专门回复对等方 仅适用于 ACK 等 我需要注册这些客户端 识别他们并能够在分
  • Rails中防止重复记录的正确方法

    在我的模型中我有这个 validates name presence gt true uniqueness gt true 在我的控制器中我有 if location save format html redirect to locatio