как отключить QueryCache ActiveRecord из Ruby - PullRequest
1 голос
/ 15 декабря 2010

Я хочу отключить кэш запросов ActiveRecord от ruby, но он не работает, код приведен ниже:

def test_transaction
  ActiveRecord::Base.connection.execute("create table if not exists t(name varchar(100))")
  ActiveRecord::Base.connection.uncached do
  begin
    ActiveRecord::Base.transaction do
      ActiveRecord::Base.connection.execute("insert into t values('one')")
      ActiveRecord::Base.connection.execute("insert into t values('two')")
      ActiveRecord::Base.connection.execute("insert into t values('three')")
      ActiveRecord::Base.connection.execute("insert into t values('four')")
      result = ActiveRecord::Base.connection.select_all("select count(*) as total from t")[0]['total'].to_i
      assert_equal(0, result)
    end
  ensure
    ActiveRecord::Base.connection.execute("drop table if exists t")
  end
end
end

На самом деле, когда код запускается в строке перед выбором, я вхожу в mysql через консоль и выполняю тот же запрос выбора, итоговый результат равен нулю, так что все в порядке, но после выполнения кода выбором результат 4, то есть select должен извлекаться из кэша запросов, но я не собираюсь этого делать, поэтому кто-нибудь может мне помочь?

Заранее спасибо!

1 Ответ

1 голос
/ 15 декабря 2010

после экспериментов непосредственно на консоли mysql и, наконец, обнаружил, что это не связано с ActiveRecord, это связано с механизмом транзакции mysql.

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