我想查看给定ActiveRecord查询将生成的SQL语句。我知道可以在发出查询后从日志中获取此信息,但是我想知道是否存在可以在ActiveRecord Query上调用的方法。
例如:
SampleModel.find(:all, :select => "DISTINCT(*)", :conditions => ["`date` > #{self.date}"], :limit => 1, :order => '`date`', :group => "`date`")
我想打开irb控制台并在最后添加一个方法,该方法将显示此查询将生成的SQL,但不一定执行该查询。
上一次我尝试执行此操作时,还没有正式的方法。我求助于使用函数find及其朋友直接用于生成查询的函数。它是私有API,因此Rails 3会完全破坏它,这是一个巨大的风险,但是对于调试而言,这是一个不错的解决方案。
find
您必须使用construct_finder_sql(options)(lib/active_record/base.rb:1681)方法,send因为它是私有的。
construct_finder_sql(options)
lib/active_record/base.rb:1681
send
编辑 :construct_finder_sql 在Rails 5.1.0.beta1中已删除。
construct_finder_sql