2010-11-12 83 views
0

如何在我的Rails記錄器中擁有SQL事務塊?Rails 3.活動記錄。日誌記錄。顯示SQL事務塊

例如,我有以下交易:

 

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

完成其工作,下一行會被添加到日誌/ 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;

Ruby 1.9.2;

Ruby on Rails 3.0.1;

Sqlite 3.7.3。

回答

0

它實際上並沒有在ActiveRecord中實現。你需要在ActiveRecord bugtracker上做一些功能請求,或者自己做補丁或者嘗試創建一個插件來做到這一點。