我正在寻找一种方法来存储在更新或创建操作中生成的 sql 字符串。我试过追加.to_sql
到末尾,update_attributes
但它返回一个TrueClass
错误(或类似的东西)。有什么我想念的吗?
问问题
1880 次
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
学分:
于 2012-10-23T19:56:13.783 回答
2
这些方法都返回一个布尔值。您不能to_sql
在布尔值上调用。
于 2012-10-23T19:16:05.610 回答