почему атрибут в модели не работает в Rails SIMPLE

#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