在rails中提交后回滚事务

时间:2013-02-22 10:22:37

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

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

让我拥有一个包含属性名称,电子邮件等的用户模型。

对于前。

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

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

3 个答案:

答案 0 :(得分:8)

您可以对交易执行此操作,请参阅http://markdaggett.com/blog/2011/12/01/transactions-in-rails/

示例:

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

答案 1 :(得分:3)

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

  

PaperTrail可让您跟踪模型数据的变化。这对你有好处   审计或版本控制。您可以看到模型在任何阶段的表现   它的生命周期,将其恢复为任何版本,甚至在之后取消删除   它被摧毁了。

https://github.com/airblade/paper_trail

没有任何从属关系。

答案 2 :(得分:2)

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

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