2010-04-20 9 views

Répondre

3

Pauvre homme de « aucune transaction »

# Force the loading of AR stuff 
ActiveRecord::Base.connection.execute('SELECT 1') 

# Remove transactions 
ActiveRecord::ConnectionAdapters::MysqlAdapter.class_eval do 
    def begin_db_transaction 
    end 

    def commit_db_transaction 
    end 
end 
-3
transaction

est une méthode de classe sur ActiveRecord :: Base vous pouvez donc le faire comme ceci:

Model.transaction do 
    ... 
end 

ou si vous préférez le faire sans modèle spécifique:

ActiveRecord::Base.transaction do 
    ... 
end 

Il peut dépend également de la base de données que vous utilisez, je sais pour sûr que cela fonctionne sur mysql mais pas sur les autres.

+1

Vous avez mal interprété la question. Je veux désactiver les transactions, ne pas les utiliser. Vos exemples utilisent explicitement les transactions. ActiveRecord utilise des transactions à différents points, et ce sont celles que je veux supprimer. –

+0

Marqué celui-ci pour être hors de propos. –

+0

Merci pour la réponse, mcostanza. Cela fonctionne pour moi, même si ce n'est pas pour l'OP. –

0

similaires à la réponse de Daniel, mais je l'ai trouvé que je devais désactiver également savepoints pour fonctionner. Testé sur Rails 3.2.22.2.

ActiveRecord::ConnectionAdapters::Mysql2Adapter.class_eval do 
    def begin_db_transaction 
    end 

    def commit_db_transaction 
    end 

    def create_savepoint 
    end 

    def rollback_to_savepoint 
    end 

    def release_savepoint 
    end 
end 
Questions connexes