Правильный Rules

Всем привет, вопрос простой:

Есть модель User, есть формы, которые с этой моделью взаимодействуют (Регистрация, восстановление пароля, вход, выход). Что бы провести валидацию данных можно использовать два способа - либо в Rules модели User все расставить в соответствии со сценариями, типа:


return array(

	array('password', 'required', 'on'=>'login', 'message'=>Yii::t('User', 'Обязательное поле')),

	array('email', 'required', 'on'=>'login, registration, restore', 'message'=>Yii::t('User', 'Обязательное поле')),

	array('password2', 'required', 'on'=>'registration', 'message'=>Yii::t('User', 'Обязательное поле')),

	

	array('email', 'email', 'message'=>Yii::t('User', 'Заполнено не верно')),

	array('password', 'length', 'min'=>3, 'max'=>12, 'tooShort'=>Yii::t('User', 'Минимальное количество символов: {min}'),'tooLong'=>Yii::t('User', 'Максимальное количество символов: {max}')),

	array('password2', 'compare', 'compareAttribute'=>'password', 'message'=>Yii::t('User', 'Не совпадает с паролем')),

	array('captcha', 'captcha', 'allowEmpty' => !extension_loaded('gd'), 'captchaAction' => 'site/captcha', 'message' => Yii::t('User', 'Код введен не верно')),


);

Либо для каждой формы создать отдельную модель типа CFormModel, где скорее всего всеравно прийдется использовать сценарии (Например при регистрации будет кроме основной еще одна форма, “шаг2” - подтверждения Email). Подскажите, как правильно, как красиво и что вообще все нормальные люди делают в такой типичной ситуации. Спасибо :)

А пример сайта? Где можно увидеть о чём вы говорите?

А я делал и так и так. Вариант с отдельными моделями (регистрация/профиль, авторизация, восстановление пароля) мне нравится больше чем одна модель с множеством сценариев.

Еще спотыкался о то, что модель после сохранения переключает сценарий на "update" даже если изначально была "register"

Очень хорошо описал предыдущий оратор, пример сайта громоздко получается :))

Насчет переключения сценария - интересная подстава, спасибо