Rails 3, Неизвестный валидатор: 'EmailValidator' - программирование
Подтвердить что ты не робот

Rails 3, Неизвестный валидатор: 'EmailValidator'

Я пытаюсь добавить средство проверки электронной почты в мое приложение 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 << "#{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)

Кто-нибудь знает, как я могу исправить эту проблему?

4b9b3361

Ответ 2

Эта ошибка возникает, потому что rails загружает файл модели перед вашим файлом проверки

Попробуйте выполнить свой файл проверки вручную в начале файла модели

require_dependency 'validators/email_validator.rb'

Ответ 3

Попробуйте модифицированную модель пользователя;

class User < ActiveRecord::Base

  attr_accessible :email, :password,:name

  validates :email, :presence => true, :uniqueness => true

end