【问题标题】:Rails Active::Records creates incomplete nested records, when duplicate field detected当检测到重复字段时,Rails Active::Records 创建不完整的嵌套记录
【发布时间】:2021-01-31 05:20:11
【问题描述】:

我创建了一个类似于Active::Record 示例的表结构,用于连接表。 books 表有如下嵌套关系:

(book: {reviews: { customer: :orders}})

我正在通过发布请求从表单提交所需信息。如果电子邮件地址已存在,则在另一个客户记录中,将在响应中发送电子邮件错误。但是,在没有客户的情况下,仍会创建所有其他记录(书籍、评论和订单)。发生电子邮件错误时,如何停止创建所有记录?我的控制器使用新方法创建每条记录,然后在保存之前进行验证,见下文。

person_controller.rb:

@book = Book.new title: "new book", year_published: 2021
authorize @book
@book.save
@customer = Customer.new name: attribute_params["name"], email: attribute_params["email"]
authorize @customer
@customer.save
@review = Review.new title: "terrible title", customer: @customer, book: @book
authorize @review
@review.save
@order = Order.new date_submitted: Time.now, customer: @customer
authorize @order
@order.save

【问题讨论】:

    标签: ruby-on-rails join nested table-relationships


    【解决方案1】:

    要直接回答您的问题,您需要将代码放入Transaction 并使用保存!而是。

    如果块中的任何地方出现异常,事务将确保不会保存任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多