代码之家  ›  专栏  ›  技术社区  ›  Shamaoke

轨道3。活动记录。登录中。显示SQL事务块

  •  0
  • Shamaoke  · 技术社区  · 15 年前

    如何在Rails记录器中使用SQL事务块?

    例如,我有以下事务:

    
    >> Client.transaction do
    ?> Client.find_by_name('Pavel').withdraw(2000)
    >> Client.find_by_name('Elena').deposit(2000)
    >> raise ActiveRecord::Rollback
    >> end
    => nil
    
    

    完成工作后,下一行将添加到 :

    
    SQL (0.4ms)  UPDATE "balances" SET "amount" = 8000 WHERE ("balances"."id" = 1)
    SQL (0.2ms)  UPDATE "balances" SET "amount" = 7000 WHERE ("balances"."id" = 2)
    
    

    它应该如下所示:

    
    BEGIN;
      UPDATE "balances" SET "amount" = 8000 WHERE ("balances"."id" = 1);
      UPDATE "balances" SET "amount" = 7000 WHERE ("balances"."id" = 2);
    ROLLBACK;
    
    

    在使用事务时,如何获取正确的SQL输出?

    谢谢

    Debian GNU/Linux 5.0.6;

    Ruby 1.9.2;

    Sqlite 3.7.3。

    1 回复  |  直到 15 年前
        1
  •  0
  •   shingara    15 年前

    实际上,它并没有在ActiveRecord中实现。你需要在ActiveRecordBugTracker上请求一些功能,或者自己做补丁,或者试着创建一个插件来完成。