1

我正在寻找一种方法来存储在更新或创建操作中生成的 sql 字符串。我试过追加.to_sql到末尾,update_attributes但它返回一个TrueClass错误(或类似的东西)。有什么我想念的吗?

4

2 回答 2

3

简而言之 - 您需要覆盖 ActiveRecord 执行方法。在那里您可以添加任何日志记录逻辑。

connection = ActiveRecord::Base.connection
class << connection
  alias :original_exec :execute
  def execute(sql, *name)
    # try to log sql command but ignore any errors that occur in this block
    # we log before executing, in case the execution raises an error
    begin
        file = File.open(RAILS_ROOT + "/log/sql.txt",'a'){|f| f.puts Time.now.to_s+": "+sql}
    rescue Exception => e
      ;
    end
    # execute original statement
    original_exec(sql, *name)
  end
end

学分:

https://stackoverflow.com/a/1629474/643500

https://stackoverflow.com/a/1640560/643500

于 2012-10-23T19:56:13.783 回答
2

这些方法都返回一个布尔值。您不能to_sql在布尔值上调用。

于 2012-10-23T19:16:05.610 回答