【问题标题】:Rails 3, Unknown validator: 'EmailValidator'Rails 3,未知验证器:'EmailValidator'
【发布时间】:2013-02-23 07:50:11
【问题描述】:

我尝试在我的 rails 应用程序中添加电子邮件验证器。我创建了以下文件/lib/validators/email_validator.rb

class EmailValidator < ActiveModel::EachValidator
  def validate_each(object, attribute, value)  
    unless value =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i  
      object.errors[attribute] << (options[:message] || "is not formatted properly")  
    end  
  end  
end

在 application.rb 我添加了这一行:

config.autoload_paths &lt;&lt; "#{config.root}/lib/validators"

这是我的用户模型:

class User < ActiveRecord::Base
  attr_accessible :email, :password,:name
  validates :email, :presence => true, :uniqueness => true, :email => true  
end

如果我想启动服务器我得到一个错误:

Unknown validator: 'EmailValidator' (ArgumentError)

有人知道我该如何解决这个问题吗?

【问题讨论】:

  • 如何在 rails 5 中使用它。它不会使用ActiveModel::EachValidator 验证电子邮件。 EmailValidator 类没有被调用。

标签: ruby-on-rails ruby-on-rails-3 validation email


【解决方案1】:

如果您将自定义验证器放在 app/validators 中,它们将是 自动加载,无需更改您的 config/application.rb 文件。

资源:Where should Rails 3 custom validators be stored?(第二个答案)

【讨论】:

    【解决方案2】:

    尝试修改后的用户模型;

    class User < ActiveRecord::Base
    
      attr_accessible :email, :password,:name
    
      validates :email, :presence => true, :uniqueness => true
    
    end
    

    【讨论】:

    • 这不是问题解决方案
    【解决方案3】:

    发生此错误,因为 rails 在您的验证文件之前加载模型文件

    尝试在模型文件的开头手动要求您的验证文件

    require_dependency 'validators/email_validator.rb'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-22
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      相关资源
      最近更新 更多