Отключить транзакции в ActiveRecord - PullRequest
1 голос
/ 21 апреля 2010

Как отключить транзакции в RailR 'ActiveRecord? У меня есть особая ситуация, когда я хочу, чтобы они ушли, я не могу найти ничего полезного там. Это вообще возможно?

Ответы [ 3 ]

3 голосов
/ 21 апреля 2010

Бедняжка "без транзакций"

# 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
0 голосов
/ 09 мая 2016

Аналогично ответу Даниэля, но я обнаружил, что мне также пришлось отключить точки сохранения для работы. Протестировано на 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
0 голосов
/ 21 апреля 2010

транзакция - это метод класса в ActiveRecord :: Base, поэтому вы можете сделать это следующим образом:

Model.transaction do
  ...
end

или, если вы предпочитаете делать это без конкретной модели:

ActiveRecord::Base.transaction do
  ...
end

Это также может зависеть от того, какую базу данных вы используете, я точно знаю, что она работает на mysql, но не уверена в других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...