我如何登錄到文件模型的驗證錯誤?失敗保存的Rails日誌模型錯誤
我想要一個自定義日誌文件,當我在開發模式下使用我的應用程序進行播放時,會記錄驗證錯誤。
實現該目標的最佳選擇是什麼?
猴子修補的保存方法是一個好主意嗎?或者讓你有更好的方法來做到這一點?
我如何登錄到文件模型的驗證錯誤?失敗保存的Rails日誌模型錯誤
我想要一個自定義日誌文件,當我在開發模式下使用我的應用程序進行播放時,會記錄驗證錯誤。
實現該目標的最佳選擇是什麼?
猴子修補的保存方法是一個好主意嗎?或者讓你有更好的方法來做到這一點?
我會寫一個before_save回調並記錄錯誤,如果有效?返回false。
取決於你想要做什麼,但如何對這樣的事情:
# model
after_validation :log_errors, :if => Proc.new {|m| m.errors}
def log_errors
Rails.logger.debug self.errors.full_messages.join("\n")
end
我知道這是老了......但對於其他人。我創建了一個包含在我的模型中的模塊。
# validation_logger.rb
module ValidationLogger
def self.included(base)
base.send :include, InstanceMethods
base.after_validation :log_errors, if: ->(m) { m.errors.present? }
end
module InstanceMethods
def log_errors
Rails.logger.warn "#{self.class.name} #{self.id || '(new)'} is invalid: #{self.errors.full_messages.inspect}"
end
end
end
我結合兩者的Lenart和Altonymous建議。所以,我們做一個關注(因爲軌道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
,並改變我們的模型,包括它
# app/models/my_model.rb
class MyModel < ApplicationRecord
include LogValidationErrors
# ...
end
這是非常有幫助.. +1 – 2014-11-02 10:55:34