Исправление ActiveRecord :: Base.connection.execute не работает - PullRequest
0 голосов
/ 22 февраля 2020

Я нахожусь в приложении Rails 6 с sqlite DB. Я пытаюсь посмотреть на SQL, сгенерированный запросом активной записи, чтобы определить, является ли это чтением или записью.

У меня есть следующий код в инициализаторе:

adapter_klass = ActiveRecord::Base.connection.class
adapter_klass.class_eval do
  alias_method :original_execute, :execute

  def execute(sql, name=nil)
    puts "SQL intercept"
    original_execute(sql, name)
  end

end

При тестировании в консоли Rails:

⇒  be rails c
Running via Spring preloader in process 10725
Loading development environment (Rails 5.2.4.1)
irb(main):001:0> Rental.first
SQL intercept
  Rental Load (0.4ms)  SELECT  "rentals".* FROM "rentals" ORDER BY "rentals"."id" ASC LIMIT ?  [["LIMIT", 1]]
=> #<Rental id: 1, rental_type: "condo", postal_code: "90535", owner_id: 1>
irb(main):002:0> Rental.count
   (0.2ms)  SELECT COUNT(*) FROM "rentals"
=> 2

Патч обезьяны запускается для первого запроса, но не что касается прочего. Спасибо за помощь !!

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