2011-12-21 7 views
1

Я программист Objective-c, поэтому я не привык иметь код вне методов.Когда выполняется «проверка подлинности»?

У меня есть вопрос из двух вопросов о Rail's validates.

Рассмотрим этот код:

class User < ActiveRecord::Base 
    attr_accessible :name, :email 

    email_regex = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i 

    validates :name, :presence => true, 
        :length  => { :maximum => 50} 

    validates :email, :presence => true, 
        :format  => { :with => email_regex }. 
        :uniqueness => true 

end 
  1. Когда именно это validates метод казнили? При создании экземпляра User или при загрузке его определения класса?
  2. Когда действительно User действительно подтверждается? Когда я сохраняю экземпляр User или создаю его?

ответ

2

Все звонки внутри определения класса называются когда класс определение выполняется, а не при создании экземпляра. Стоит отметить, что переменная mail_regex не является переменной экземпляра, а скорее локальной переменной для определения класса.

1

1) Эти методы называются самим классом User и добавляются проверки на его экземпляры.

2) Когда вы их сохраняете.

PS: Вы можете использовать драгоценный камень valid_email для проверки правильности адреса электронной почты.

Вы можете просто сделать это:

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

... после того, как вы положили valid_email на вашем Gemfile.

+0

+1 для предложения драгоценного камня! – 0xSina

+0

Вы можете щелкнуть +1. : P –

+0

hmm did, не уверен, почему он не зарегистрировался. – 0xSina

0

1 - проверка выполняется как обратный вызов перед сохранением/созданием модели. Таким образом, вы можете создать экземпляр модели без проверки. Однако, когда вы пытаетесь сохранить его, он должен будет пройти проверку.

2- Когда пользователь фактически получает подтверждение? Когда я сохраняю экземпляр пользователя или создаю его?

Пользователь получает подтверждение после сохранения или создания. При необходимости вы можете переопределить это.

0

Вы пробовали его в консоли рельсов? Когда у меня возникает такой вопрос, я часто бываю в интерактивном режиме и вижу, что происходит.

./script/console 
Loading develoment environment (...) 
>> #make a user here and see if you can 

Если вы попытаетесь сохранить пользователя и необходимые условия, которые вы указали, не выполняются, вы получите сообщение об ошибке.

0
  1. проверки выполняются при загрузке файла user.rb.
  2. Пользователь фактически подтвержден, когда вы вызываете #save или #valid?
Смежные вопросы