2

我想知道,有没有简单的方法可以检查给定的 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
  #...

谢谢

4

0 回答 0