5
私がRailsに夢中になっていることの1つは、コンソールにROLLBACK
というメッセージが表示され、ロールバックに理由が付けられていないということです。これはしばしばいくつかの検証エラーのために私を狩りに導くが、より詳細なメッセージを持っているとよいだろう。Rails 4、より良いロールバックをログに記録できますか?
dbロールバックの詳細ログを有効にする方法はありますか?
私がRailsに夢中になっていることの1つは、コンソールにROLLBACK
というメッセージが表示され、ロールバックに理由が付けられていないということです。これはしばしばいくつかの検証エラーのために私を狩りに導くが、より詳細なメッセージを持っているとよいだろう。Rails 4、より良いロールバックをログに記録できますか?
dbロールバックの詳細ログを有効にする方法はありますか?
after_rollbackコールバックを使用できます。
RollbackLoggerと呼ばれるモジュールを作成し、すべてのActiveRecordのモデルでは、このモジュールを含む、あなたのアプリ/懸念ディレクトリ内
module RollbackLogger
extend ActiveSupport::Concern
included do
after_rollback :log_status, on: [:create, :update]
end
def log_status
Rails.logger.info "Rollback caused by: #{self.errors.full_messages}"
end
end
を置き:
class Foo < ActiveRecord::Base
include RollbackLogger
end
編集:
Mr. Damien Rocheが示すようにconfig/initializers
ディレクトリ内に新しいファイルを作成し、次の行を追加することができます。
ActiveRecord::Base.send(:include, RollbackLogger)
すべてのモデルにRollbackLogger
モジュールが自動的に含まれます。
私はRailsには新しく、非侵入的な方法ですべてのモデルでこれをどうやってやりますか? –
更新された回答を確認してください。うまくいけば、これは十分にきれいです。 –
@ChrisLedet参照:http://stackoverflow.com/questions/2328984/rails-extending-activerecordbase。懸念されている状況では、 'ActiveRecord :: Base.send(:include、RollbackLogger)'をすべてのモデルに含めることができます。 –