Rails 在 save() 失败后不会回滚事务

2023-12-13

我有这个域模型:用户拥有一组项目,并且项目的状态可能无法通过验证。

验证工作正常,我什至看到当我使用时会调用异常save!.

在我的控制器中,我有这个:

@user.items() << item

if @user.save
  render :json => {}, :status => :ok
else
  render :json => {:status => :error, :errors => item.errors}, :status => :bad_request
end

第一个 POST 成功,第二个 POST 失败,但是当我点击索引时,我仍然看到两个对象,就好像第二个事务从未回滚一样。到底是怎么回事?

我的测试是这样的:

  post :create
  post :create
  get :index
  ActiveSupport::JSON.decode(response.body).length.should == 1

编辑:即使在运行服务器时,事务也不会回滚(sqlite3)。


将项目添加到集合中会立即保存它(除非用户未保存)。 对 save 的调用创建了自己的事务,这就是回滚的事务,而不是保存项目的事务

您可以通过显式创建一个事务来将所有内容强制放入同一事务中。

begin
  User.transaction do
    @user.items << item
    @user.save!
    render :json => {}, :status => :ok
  end
rescue ActiveRecord::RecordInvalid
  render :json => {:status => :error, :errors => item.errors}, :status => :bad_request
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 在 save() 失败后不会回滚事务 的相关文章

  • 将一个大的 postgres 表拆分为多个 csv

    我正在使用以下 psql 查询连接到远程主机并将一个大表拆分为多个 csv 文件 psql h xx p xx U xx d xx c COPY select from table TO program split lines 1000 f
  • 将元数据添加到 PDF

    我需要将元数据添加到我正在创建的 PDF 中prawn http rubygems org gems prawn 该元数据稍后可能会被提取 pdf阅读器 http rubygems org gems pdf reader 该元数据将包含内部
  • Rails 可以自动解析从表单 text_field 收到的日期时间吗

    Rails 可以自动解析从表单的文本字段接收到的日期时间吗 in view div class field br div in controller params product updated at yesterday 目前我收到以下错误
  • 在 Rails 5 中结合 API 和 Web 视图

    从 Rails 5 开始 API gem 被合并进来 现在 如果我有 API 可以通过 AJAX 从网页调用 这会给我们留下什么 我正在这里寻找最佳实践 当然 我可以自己使用 JSON 序列化器创建一条路由 然后 就有可能将 API 调用完
  • Psycopg / Postgres:连接随机挂出

    我正在使用 psycopg2 作为我当前正在开发的cherrypy 应用程序 并使用 cli 和 phpgadmin 来手动处理一些操作 这是Python代码 One connection per thread cherrypy threa
  • Backbone.js 应用程序可以逐步增强并可供搜索引擎抓取吗?

    我需要为我的下一个项目实现一个 MVC JavaScript 框架 但它既是一个网站 又是一个 Web 应用程序 是否可以公开数据服务器端 然后解析 URL 以显示 JS 版本 我计划使用 Rails 作为服务器端代码 我写了一个关于这个主
  • Heroku 上的“PG::错误 - 数字字段溢出”

    我构建了一个应用程序来查询 Google Analytics 的过去 7 天的数据 一切都在本地进行 在 Heroku 上 该过程运行顺利 直到它尝试获取今天日期的数据 然后我收到以下错误 2012 10 29T02 32 02 00 00
  • 使用 Active Record 信誉系统 gem,当我按投票排序时不会发生排序

    遵循 RailsCast 的信誉系统 gem 我将以下代码添加到我的 microposts controller 中 def index microposts Micropost paginate page params page find
  • ruby 中 for 循环的语法

    如何在 Ruby 中执行这种类型的 for 循环 for int i 0 i
  • 在 Ruby 文档中哪里可以找到字符串转义序列?

    我可以在 中找到有关 Ruby 转义序列的详细信息 红宝石弦 http www tutorialspoint com ruby ruby strings htm and 转义序列 http en wikibooks org wiki Rub
  • 在 Ruby 中,如何指定另一个目录中的文件作为输入?

    这可能有一个简单的答案 但我正在开发一个测试套件 它需要位于不同文件夹中的输入文件 我想使用相对路径 如下所示 graph Graph new lib test input txt 但鲁比不喜欢这样 使用这样的相对文件路径的最佳方法是什么
  • 活动管理:同一列中的多个操作,类似于查看、编辑、删除

    我正在使用 active admin gem 为我的 ruby on Rails 应用程序提供一个管理控制台 我遇到一个问题 我想对索引页面上的每个项目进行多个自定义操作 就像查看 编辑 删除一样 但是 当添加自定义操作时 仅显示最后一个而
  • 耙子的目的是什么?

    我知道 Rake 代表 Ruby Make 而且我知道 Make 是一个 Unix 构建实用程序 现在 我来自 Xcode 工作 将 iPhone 应用程序构建到 Ruby 所以我以前从未使用过 Make 我唯一使用 rake 的时候是在
  • 新分配的序列不起作用

    在 PostgreSQL 中 我创建了一个新表并为其分配了一个新序列id柱子 如果我从 PostgreSQL 控制台插入记录 它可以工作 但是当我尝试从 Rails 导入记录时 它会引发异常 无法找到关联的序列 这是表格 d user me
  • 如何使用 Nokogiri 漂亮地打印 HTML?

    我用 Ruby 编写了一个网络爬虫 并且正在使用Nokogiri HTML来解析页面 我需要打印该页面 在 IRB 中闲逛时 我注意到一个pretty print方法 然而它需要一个参数 我不知道它想要什么 我的爬虫正在缓存网页的 HTML
  • 在 rspec 中打印响应

    我有一个测试无法开始工作 所以我想通过打印响应来调试我的规范 我尝试过使用print response body在我的规范中 但 test log 或控制台中都没有输出 我可能错过了一些东西 我应该尝试什么 Thanks 您可以使用以下方式
  • 如何使用jdbc驱动编写事务?

    我想使用 jdbc 编写一个事务java 我尝试过这个简单的交易 BEGIN TRANSACTION NL GO NL UPDATE table SET col test where id 1010 NL GO NL COMMIT 我尝试过
  • 如何对 ruby​​ 的 URI.parse 方法进行猴子补丁

    一些流行的博客网站通常在其 URL 中使用方括号 但 ruby 的内置 URI parse 方法会阻塞它们 引发令人讨厌的异常 如下所示 http redmine ruby lang org issues show 1466 http re
  • 正则表达式匹配组,但组成员除外

    因此 有许多正则表达式可以匹配特定的组 如下所示 Any character except a newline m Any character the m modifier enables multiline mode w A word c
  • 在 PostgreSQL 中存储图像

    好吧 我正在开发一个应用程序 该应用程序将使用运行 PostgreSQL 的 Linux 后端向 Windows 机器提供图像 前端用 C NET 编写 尽管前端应该不重要 我的问题是 在 Postgres 中存储图像的最佳方法是什么 每张

随机推荐

  • 仅使用按位运算符将两个整数相加?

    在 C 中 是否可以在不使用 if else 循环等的情况下执行两个 32 位整数的求和 也就是说 是否可以仅使用按位运算 OR AND XOR NOT 左移 lt lt 并右移 gt gt 这是一个例子供您娱乐 unsigned int
  • Luasocket自定义标头,404转301

    我之前的问题是关于获取页面标题lua使用socket http模块 问题就在这里 之前 YouTube 页面引导我找到了一个404错误页面 基于马特吉的帮助 我自定义了HOST请求的标头 这就是我所做的以及结果是什么 Code header
  • password_verify 使用正确的密码返回 false [重复]

    这个问题在这里已经有答案了 所以我试图从 MySQL DB 验证用户的哈希密码 但是password verify似乎不起作用 我觉得也许是我做错了什么 散列和存储密码 Set POST variables firstname mysqli
  • Javascript join() 数组

    这可能非常简单 但我尝试使用 join 数组来删除 从最后一项开始days array 我怎样才能做到这一点 这是我的代码 var days Monday Tuesday Wednesday Thursday Friday Saturday
  • 类型的扩展方法

    有没有办法为类型创建扩展方法 我似乎只能为实例创建它们 public static class MyExtensions public static string Test this string s return test public
  • Rails 中的 PostgreSQL:如何使服务器在本地运行并接受 Unix 域套接字上的连接?

    所以我是 Rails 的新手 之前只使用过 SQLite3 在使用 PostgreSQL 时 我什至很难运行一个简单的 rake 命令 我只是想按照这个截屏视频的前 5 分钟来安装 Postgres http railscasts com
  • 无法将参数从 char[#] 转换为 LPWSTR

    当我在 Visual C 中编译此代码时 出现以下错误 可以帮我解决这个问题 DWORD nBufferLength MAX PATH char szCurrentDirectory MAX PATH 1 GetCurrentDirecto
  • Unity 无法构建 apk Android

    我跟着团结 坦克 教程 现在我正在尝试将游戏移植到 Android 上 这是我第一次使用 Unity 现在当它要构建 APK 时 Unity 告诉我 无法构建 APK 然后我收到一些错误 我正在附加你我认为该错误是致命的 请告诉我出了什么问
  • ImmutableObject 属性有什么好处?

    我正在测试ImmutableObjectAttribute属性只是出于好奇 想看看应用它是否可以获得一些好处 或者它是否只是为了语义装饰 不可变对象属性类 指定对象没有可编辑的子属性 所以我有这样的课程
  • 在 ASP.NET MVC 标记中设置下拉列表以进行选择的最佳方法是什么?

    我有这个html
  • 如何在 Java (Android) 中生成正弦扫频

    I found 使用 Android 播放任意音调当我生成频率音时很有帮助 现在我希望在播放音调时改变频率 我将 genTone 修改为与此类似 private void genTone double startFreq double en
  • 将 context.requestTimeEpoch 映射到 AWS API Gateway 映射模板中的自定义日期格式字符串

    我正在尝试使用单一资源方法 POST 设置 API 网关 该方法仅接受 JSON 并将其写入 S3 存储桶 在询问后 我已经让流程正常工作 POST 正文中的 JSON 被写入 S3 对象 这个问题并获得有关动态确定 S3 对象的对象键的帮
  • 标题消息就像 Stack Overflow 中一样

    这是我第一次访问堆栈溢出 我看到了一条漂亮的标题消息 其中显示了文本和关闭按钮 标题栏是固定的 非常能吸引访问者的注意力 我想知道你们中是否有人知道获得相同类型标题栏的代码 快速的纯 JavaScript 实现 function Messa
  • Eclipse 动态 Web 项目中静态文件目录的放置位置

    我使用 Eclipse 创建了一个动态 Web 项目 我有一些 java 程序 它们放置在 Java Resources src 文件夹中 这些程序使用Lucene我放置在 WebContent WEB INF lib 文件夹 Java 程
  • React setState 不立即更新

    我正在开发一个待办事项应用程序 这是有问题的代码的一个非常简化的版本 我有一个复选框 p p
  • 如何在React Native中添加模糊效果?

    如何在 React Native 中为视图添加模糊 就像我们将其应用于图像或背景图像一样 如果视图具有使用 RGBA 的半透明背景 我还想为其添加模糊 示例代码
  • 是否可以将 git 提交挂钩到 Textmate 上的保存?

    让我成为 Eclipse 用户的一个特性是 每次点击 保存 时 它的副本都会进入 Eclipse 本地历史记录 然后你可以对本地历史进行比较 不过 我还是想使用 Textmate 因为我听说过它的优点 我知道有一个功能要求对于未来的版本 但
  • Android,我应该将 MediaPlayer 设为服务吗?

    我正在尝试编写一个 Android 应用程序 该应用程序将允许用户收听广播电台 我已经启动和停止按钮可以工作并且它可以播放流 如果我按主页键并开始使用手机执行其他操作 流将继续播放 这就是我希望它发挥作用的方式 我是否应该创建一个服务来播放
  • 宏增加值然后连接

    我想创建一个递归宏 它将创建 下一个 类 Example define PRINTME indexNum class m indexNum 1 The indexNum 1被评估为int 并且不会连接到类名 在连接之前 如何使编译器对其进行
  • Rails 在 save() 失败后不会回滚事务

    我有这个域模型 用户拥有一组项目 并且项目的状态可能无法通过验证 验证工作正常 我什至看到当我使用时会调用异常save 在我的控制器中 我有这个 user items lt lt item if user save render json