【问题标题】:Rails 3. Active Record. Logging. Display SQL-transaction blocksRails 3. 活动记录。记录。显示 SQL 事务块
【发布时间】:2010-11-12 11:31:51
【问题描述】:

如何在 Rails 记录器中保存 SQL 事务块?

例如,我有以下交易:

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

完成工作后,下一行将被添加到 log/development.log

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

但是,上述事务不会更新数据库,并且 SQL 输出会造成混乱。

应该是这样的:

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;

红宝石 1.9.2;

Ruby on Rails 3.0.1;

Sqlite 3.7.3.

【问题讨论】:

    标签: ruby-on-rails logging activerecord transactions


    【解决方案1】:

    它实际上并没有在 ActiveRecord 中实现。你需要在 ActiveRecord bugtracker 上提出一些功能请求,或者自己做补丁或者尝试创建一个插件来做到这一点。

    【讨论】:

      猜你喜欢
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 2011-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多