如何在rails控制台中查看mysql查询

24 ruby ruby-on-rails

有没有办法让我看到在rails控制台中从ActiveRecord触发了哪些mysql查询?

提前致谢.

int*_*iot 51

是的,这可以通过将rails log重定向到标准输出来实现.

在控制台提示符中写下这些:

ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.connection_pool.clear_reloadable_connections!
Run Code Online (Sandbox Code Playgroud)

此外,您可以将这些行放在〜/ .irbrc文件中,这样每次您不需要手动编写这两行:

require 'rubygems'

if ENV.include?('RAILS_ENV') && ENV["RAILS_ENV"] == 'development'
    ActiveRecord::Base.logger = Logger.new(STDOUT)
    ActiveRecord::Base.connection_pool.clear_reloadable_connections!
end
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...


Abh*_*bhi 5

在Rails 3+中,您可以使用ActiveRecord :: Relation的to_sql方法:

User.where(:id => 3).to_sql
#=> "SELECT \"users\".* FROM \"users\"  WHERE \"users\".\"id\" = 3"
Run Code Online (Sandbox Code Playgroud)