Rails 3,未知validation器:’EmailValidator’

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

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

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

config.autoload_paths << "#{config.root}/lib/validators"

这是我的用户模型:

 class User  true, :uniqueness => true, :email => true end 

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

 Unknown validator: 'EmailValidator' (ArgumentError) 

有谁知道如何解决这个问题?

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

资源: 应该在哪里存储Rails 3自定义validation器? (第二个答案)

发生此错误,因为rails会在validation文件之前加载模型文件

尝试在模型文件的开头手动要求validation文件

 require_dependency 'validators/email_validator.rb' 

尝试修改的用户模型;

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