【发布时间】:2020-05-01 13:31:48
【问题描述】:
目前,当我在 rails 控制台中运行一个方法时,它会显示所有 sql 查询,但我希望它也能显示在代码中调用 sql 的位置。我该怎么做?
【问题讨论】:
标签: mysql ruby-on-rails ruby
目前,当我在 rails 控制台中运行一个方法时,它会显示所有 sql 查询,但我希望它也能显示在代码中调用 sql 的位置。我该怎么做?
【问题讨论】:
标签: mysql ruby-on-rails ruby
在控制台中运行 ActiveRecord::Base.verbose_query_logs = true 为我解决了这个问题。我找到了信息here
【讨论】:
ActiveRecord::Base 版本已被弃用,您现在应该改用ActiveRecord.verbose_query_logs = true。
Pry (http://pry.github.com/) 可能会有所帮助。有一个show-source 方法可以在从控制台运行时执行此操作。这是我在本地做的一个例子。
rails c
DEBUG: Chewy strategies stack: [2] <- urgent @ /Users/jmlockl2/.rvm/gems/ruby-2.3.1@ask/gems/chewy-0.9.0/lib/chewy/railtie.rb:49
Loading development environment (Rails 3.2.22.5)
2.3.1 :001 > pry
[1] pry(main)> q=Question.last
Question Load (0.2ms) SELECT `questions`.* FROM `questions` ORDER BY `questions`.`id` DESC LIMIT 1
=> ...
[2] pry(main)> q.email
User Load (0.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 535441 LIMIT 1
=> "email@gmail.com"
[3] pry(main)> show-source q.email
[3] pry(main)> show-source q.email
From: /Users/...question.rb @ line 564:
Number of lines: 3
Owner: Question
Visibility: public
def email
self.submitter.present? ? self.submitter.email : ''
end
[4] pry(main)>
希望这会有所帮助!
【讨论】: