是否可以设置系统范围的验证回调?
我想为任何模型中发生的每个验证失败编写一个记录器。此回调不应更改模型中设置的任何其他回调的行为。
我需要它来为我的客户提供更快的支持,我的想法是记录所有验证错误,以便支持团队能够更快地找出发生了什么。
最佳答案
尽管 @MurifoX 的答案可能适用于某些配置,但我更愿意尽可能避免从 ActiveRecord::Base 继承。由于 SuperModel 继承自 ActiveRecord::Base,它可能看起来像是一个在数据库端有表示的实际模型,而它的存在只是为了继承。
在我看来,更好的解决方案是 Ruby Mixins :
# lib/validation_logger.rb
module ValidationLogger
def self.included(base)
base.class_eval do
after_validation :log_validation
end
end
def log_validation
#custom log here
end
end
现在您只需在要记录的模型中包含 ValidationLogger
即可。
关于ruby-on-rails - 系统范围的验证回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16823998/