1

update または create アクションで生成された SQL 文字列を格納する方法を探しています。.to_sqlの最後に追加しようとしましたが、エラー (またはそのようなもの)update_attributesが返されます。TrueClass私が見逃しているものはありますか?

4

2 に答える 2

3

簡単に言うと、ActiveRecordのexecuteメソッドをオーバーライドする必要があります。そこで、ロギング用のロジックを追加できます。

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 に答える