我正在寻找一种方法来存储在更新或创建操作中生成的sql字符串。我尝试将.to_sql
附加到update_attributes
的末尾,但它会返回TrueClass
错误(或类似的内容)。有什么东西我不见了吗?
答案 0 :(得分:1)
这些方法都返回一个布尔值。您不能在布尔值上调用to_sql
。
答案 1 :(得分:1)
简而言之 - 您需要覆盖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
币: