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.