Ответ 1
Если вы разместите свои собственные валидаторы в приложении/валидаторах, они будут автоматически загружается без изменения config/application.rb.
Ресурс: Где должны храниться пользовательские валидаторы 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
В 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)
Кто-нибудь знает, как я могу исправить эту проблему?
Если вы разместите свои собственные валидаторы в приложении/валидаторах, они будут автоматически загружается без изменения config/application.rb.
Ресурс: Где должны храниться пользовательские валидаторы Rails 3? (второй ответ)
Эта ошибка возникает, потому что rails загружает файл модели перед вашим файлом проверки
Попробуйте выполнить свой файл проверки вручную в начале файла модели
require_dependency 'validators/email_validator.rb'
Попробуйте модифицированную модель пользователя;
class User < ActiveRecord::Base
attr_accessible :email, :password,:name
validates :email, :presence => true, :uniqueness => true
end