Rails在失败的保存时记录模型错误

ast*_*nic 19 validation logging activerecord ruby-on-rails

我如何记录模型的文件验证错误?

我想要一个自定义日志文件,当我在我的应用程序的开发模式下玩时,会记录验证错误.

实现这一目标的最佳选择是什么?

猴子修补保存方法是个好主意吗?或者你有更好的方法来做到这一点?

Len*_*art 27

取决于你想做什么,但取决于这样的事情:

# model
after_validation :log_errors, :if => Proc.new {|m| m.errors}

def log_errors
  Rails.logger.debug self.errors.full_messages.join("\n")
end
Run Code Online (Sandbox Code Playgroud)


dhi*_*ilt 5

我结合了LenartAltonymous的建议。因此,我们对此表示关注(因为Rails 4)

# app/models/concerns/log_validation_errors.rb
module LogValidationErrors
  extend ActiveSupport::Concern

  included do
    after_validation :log_errors, if: proc { |m| m.errors }
  end

  def log_errors
    Rails.logger.debug "Validation failed!\n" + errors.full_messages.map { |i| " - #{i}" }.join("\n")
  end
end
Run Code Online (Sandbox Code Playgroud)

并更改我们的模型以包含它

# app/models/my_model.rb
class MyModel < ApplicationRecord
  include LogValidationErrors
  # ...
end
Run Code Online (Sandbox Code Playgroud)