#ruby-on-rails #ruby #validation
#ruby-on-rails #ruby #проверка
Вопрос:
новичок в rails / ruby, так что это (я думаю) очень простой вопрос. Почему это не работает в моей модели
class Subscription < ActiveRecord::Base
attribute :email, :validate => /A([w.% -] )@([w-] .) ([w]{2,})z/i
end
Я получаю сообщение об ошибке
undefined method `attribute' for #<Class:0x00000101218ed0>
Модель действительно существует, как и столбец (или атрибут?) ’email’, поэтому, конечно, я должен иметь возможность проверять его отправку вот так.
Комментарии:
1. Пожалуйста, смотрите: apidock.com/rails/ActiveModel/Validations/ClassMethods /…
2. Это должно быть
validates :email, format: { with: /A([w.% -] )@([w-] .) ([w]{2,})z/i }
Ответ №1:
format
Помощник Rails проверяет значения атрибутов, проверяя, соответствуют ли они заданному регулярному выражению, которое указано с помощью опции :with
Попробуйте:
class Subscription < ActiveRecord::Base
validates :email, format: { with: /A([w.% -] )@([w-] .) ([w]{2,})z/i,message: "your validation message" }
end
Если вы используете rails 3.x, то вам нужно validates_format_of
validates_format_of :email, :with => /A([w.% -] )@([w-] .) ([w]{2,})z/i