ruby-on-rails - 如果 Rails 中 2 个模型中的一个更新失败,则回滚

标签 ruby-on-rails ruby ruby-on-rails-4 activerecord

我有 2 个模型想要更新 假设我有交易和产品

我想先更新交易,然后更新产品 但由于某些原因我未能更新产品,我可以在 Rails 中回滚产品和交易吗?如何 ? :D

最佳答案

您想要做的是将其放入单个事务中。如果发生任何错误,它将回滚该 block 中所做的所有操作

https://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html

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

关于ruby-on-rails - 如果 Rails 中 2 个模型中的一个更新失败,则回滚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61368635/

相关文章:

ruby-on-rails - Rails 4 Assets 管道未找到预编译 CSS 文件

ruby-on-rails - rails : How to combine multiple ActiveRecord associations to a single collection

ruby-on-rails - 未初始化的常量 CustomersController - Rails

ruby-on-rails - 将远程 git 存储库添加到当前 git svn 存储库的风险

ruby-on-rails - Prawn html格式化

ruby - Rails 4 - STI has_many :through with polymorphic association

javascript - Rails : Infinite Scroll, 加载微调器而不是文本

ruby-on-rails - 测试 rails 中 delayed_job 插件的优先级

ruby - 如何从两个大小相等的数组构建 Ruby 哈希?

ruby-on-rails - 使用 Rails 创建新用户时创建随 secret 码