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