2010-11-12 6 views
0

Comment puis-je avoir les blocs de transaction SQL dans mon enregistreur Rails?Rails 3. Enregistrement actif. Enregistrement. Afficher les blocs de transaction SQL

Par exemple, j'ai la transaction suivante:

 

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

après la fin de ses travaux les lignes suivantes auront été ajoutées à 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) 
 

Cependant, la transaction mentionnée ci-dessus ne met pas à jour une base de données et la sortie SQL crée une confusion.

Il devrait être comme suit:

 

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

Comment puis-je obtenir une sortie SQL correcte alors que je suis en utilisant les transactions?

Merci.

Debian GNU/Linux 5.0.6;

Ruby 1.9.2;

Ruby on Rails 3.0.1;

Sqlite 3.7.3.

Répondre

0

Ce n'est pas implémenté dans ActiveRecord. Vous avez besoin de faire une demande de fonctionnalité sur le bugtracker ActiveRecord ou faites vous-même le patch ou essayez de créer un plugin pour le faire.

Questions connexes