ruby-on-rails - 系统范围的验证回调

标签 ruby-on-rails

是否可以设置系统范围的验证回调?

我想为任何模型中发生的每个验证失败编写一个记录器。此回调不应更改模型中设置的任何其他回调的行为。

我需要它来为我的客户提供更快的支持,我的想法是记录所有验证错误,以便支持团队能够更快地找出发生了什么。

最佳答案

尽管 @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/

相关文章:

ruby-on-rails - Rails 应用程序中 Rails 的本地副本

javascript - Ruby on Rails3.2 中的 javascript 文件中的 Sprockets::EncodingError

mysql pivot 到 postgres 数据透视表

php - Web 开发人员是否值得学习 C?我会使用它吗?

ruby-on-rails - 如何使用嵌套属性和 FactoryGirl 测试 Rails 创建操作?

mysql - Ruby 模型将 Controller 值存储在 MYSQL 中并添加字符

javascript - Twitter Bootstrap 粘性子导航在它应该在较短的页面上之前变得固定

ruby-on-rails - Ruby 和客户端 JS 的模板语言

ruby-on-rails - Rails acts_as_taggable_on 实现

ruby-on-rails - Twilio:使用一个 Twilio 电话号码同时召开多个出站 session 。