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

时间:2012-02-07 09:00:41

标签: sql ruby ruby-on-rails-3 activerecord

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

4 个答案:

答案 0 :(得分:2)

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

点击rails console并输入:

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

如果您想永久执行此操作(始终在控制台中显示查询),只需添加以下文件:

〜/ .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!