有没有办法检查给定的SQL是否在Rails中执行

时间:2013-07-31 10:24:37

标签: ruby-on-rails ruby-on-rails-3 arel active-relation

我想知道,有没有简单的方法来检查当前请求中是否执行了给定的SQL?

让我说

class Candy < ActiveRecord::Base

  def yummiest_candies
    @yummiest_candies = where(yummy: true, user_id: 1)
  end

  def do_something
    if was_executed?(yummiest_condies.to_sql)
      'do something'
    end
  end

  def was_executed? 
    # any ideas ??
  end
end

显然我可以检查日志,但我想知道是否有内置的解决方案。

此外,我可以检查实例变量@yummiest_candies是否存在但是想知道是否有检查SQL的解决方案

问题2: 你认为下面的代码值得做吗? (在很复杂的情况下可能)

  # app/model/candy.rb
  #...
  def factory_ids
    if was_executed?(yummiest_candies.to_sql)
      yummiest_candies.collect(&:factory_id)
    else
      yummiest_candies.pluck(:factory_id)
    end
  end
  #...

谢谢

0 个答案:

没有答案