Mar*_*vin 18 email validation ruby-on-rails ruby-on-rails-3
我尝试在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
Run Code Online (Sandbox Code Playgroud)
在application.rb中我添加了这一行:
config.autoload_paths << "#{config.root}/lib/validators"
这是我的用户模型:
class User < ActiveRecord::Base
attr_accessible :email, :password,:name
validates :email, :presence => true, :uniqueness => true, :email => true
end
Run Code Online (Sandbox Code Playgroud)
如果我想启动服务器,我收到一个错误:
Unknown validator: 'EmailValidator' (ArgumentError)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?
Zip*_*pie 12
如果将自定义验证器放在app/validators中,它们将自动加载,而无需更改config/application.rb文件.
资源:应该在哪里存储Rails 3自定义验证器?(第二个答案)
发生此错误,因为rails会在验证文件之前加载模型文件
尝试在模型文件的开头手动要求验证文件
require_dependency 'validators/email_validator.rb'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9167 次 |
| 最近记录: |