【问题标题】:Rollback transaction after commit in rails在rails中提交后回滚事务
【发布时间】:2013-02-22 10:22:36
【问题描述】:

保存成功后可以回滚记录吗?

让我有一个带有属性名称、电子邮件等的用户模型。

例如

u=User.new
u.name="test_name"
u.email="test@email.com"
u.save

现在记录将成功保存在数据库中,之后我想回滚我的事务(不是销毁或删除)。有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1 ruby-on-rails-3.2


    【解决方案1】:

    您可以通过交易做到这一点,请参阅http://markdaggett.com/blog/2011/12/01/transactions-in-rails/

    例子:

    User.transaction do
      User.create(:username => 'Nemu')
      raise ActiveRecord::Rollback
    end
    

    【讨论】:

      【解决方案2】:

      您可以在沙盒模式下运行控制台

      $> rails c --sandbox
      
      • 退出时所有更改回滚到进入点。

      【讨论】:

        【解决方案3】:

        还有一个名为 PaperTrail 的 gem,我们一直在使用它并取得了巨大的成功。它可能比你想要的多一点。

        PaperTrail 可让您跟踪模型数据的更改。这对 审计或版本控制。你可以看到模型在任何阶段的样子 它的生命周期,将其还原为任何版本,甚至在之后取消删除它 它被摧毁了。

        https://github.com/airblade/paper_trail

        无从属关系。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-24
          • 2013-11-20
          • 2013-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多