从Rails 3中的Active-record查询中检索sql查询

如何跟踪我的Activerecord方法生成的SQL查询(例如find,where)。

您可以从控制台调试ActiveRecord查询。

点击rails console并输入:

 ActiveRecord::Base.logger = Logger.new(STDOUT) 

我假设您使用的是Rails 3.0.x,您可以通过配置活动记录来实现。 把它放在config/environments/development.rb

 # Log ActiveRecord ActiveRecord::Base.logger = Logger.new(STDOUT) if defined? Rails::Console 

现在,每个查询都在控制台中解释。

您可以在关系对象上调用to_sql (就像调用where时返回的那样)来获取这些查询的SQL。

如果你想永久地执行它(总是在控制台中显示查询),只需添加这些文件:

〜/ .rvmrc

 railsrc_path = File.expand_path('~/.railsrc') if ( ENV['RAILS_ENV'] || defined? Rails ) && File.exist?( railsrc_path ) begin load railsrc_path rescue Exception warn "Could not load: #{ railsrc_path }" # because of $!.message end end 

〜/ .railsrc

 require 'active_record' ActiveRecord::Base.logger = Logger.new(STDOUT) ActiveRecord::Base.clear_active_connections!