我需要在tickets和users表中创建一行...我只需要知道如何处理交易失败的情况.

@ticket.transaction do
    @ticket.save!
    @user.save!
end
    #if (transaction succeeded)
        #.....
    #else (transaction failed)
        #......
    #end

顺便说一句,我想感谢参加stack overflow的所有人,他们帮助设计师学习了更多编程知识...感谢你们抽出时间回答n00b这样的问题:)

推荐答案

如果你正在使用save!方法时,应用程序将在保存失败时引发异常.然后,您必须捕获异常以处理失败.

begin
  @ticket.transaction do
    @ticket.save!
    @user.save!
  end
  #handle success here
rescue ActiveRecord::RecordInvalid => invalid
   #handle failure here
end

Ruby-on-rails相关问答推荐

如何在_serialize之前执行代码?""或者如何在序列化属性之前对属性进行清理?

form_with正在try 用错误的路径生成操作

Rails版本7.1.2:当验证失败且控制器发送422状态时,JS停止工作

错误AESGCMOpen获取密码:消息身份验证失败:Golang解密GCM

如何在 Rails 中声明动态路由范围/命名空间变量?

只允许用户在 Rails 中输入字母和数字

如何在 Ruby on Rails 中正确存储 BigDecimal

骨干model.destroy()即使工作正常也会调用错误回调函数?

rails 3:将链接显示为按钮?

在 Rails 4 中检测用户代理 - 读取 HTTP 标头

没有要加载的文件 - readline

Rails 3 中的猴子补丁

可以在 Rails/ActiveRecord 中使用 NULL 指定唯一索引吗?

Rails 5.1:未知 firstpos:NilClass - 问题重新加载应用程序

在 Rails 应用程序中处理大文件上传的最佳方法是什么?

Ruby on Rails - link_to 按钮 / css

Ruby 根据属性在数组中查找并返回对象

Ruby 安装的 RVM 不工作?

您将如何解析 Ruby 中的 url 以获取主域?

如何删除特殊字符?