Yii: выбор сценария в зависимости от операций в RBAC?
Обычно сценарий задается в рамках какой-то бизнес логики, а не на основе прав пользователя. То бишь ваша проблема от того что вы пытаетесь сделать в одном действии 3 разных сценарий использования. Как минимум это не правильно.
Я только сегодня более ли менее разобрался с RBAC в Yii. Подскажите пожалуйста как мне поступить в такой ситуации. Есть модель Users, которая имеет поля Username, Password, Email, Rating, Banned, RealName, About.
Для редактирования профиля пользователя используется одна и та же форма, некоторые поля которой скрываются в зависимости от прав пользователя. Сам пользователь может менять только свои Password, Email, RealName и About. Пользователь с правами модератора может менять все те же поля + banned для любого пользователя системы. Ну а пользователь с правами администратора может менять вообще любые поля любого пользователя. 
Все бы хорошо, но количество групп пользователей и их привилегий может меняться. Например, может появиться супер-модератор, который может менять все то же, что и модератор + Rating. 
При отправки данных из формы модель AR сохраняет только те данные, которые прописаны в rules самой модели. ТО, что не прописано — игнорируется. Т.е. просто скрывать поля нельзя, т.к. подделать любой POST запрос легко. Здесь нужно колдовать со сценариями, но делать что-то типа
if (Yii::app()->user->checkAccess('changeUsername') && Yii::app()->user->checkAccess('changeRating')) $model->setScenario('changeUsernameRating');
if (Yii::app()->user->checkAccess('changeUsername') && Yii::app()->user->checkAccess('changeBanned')) $model->setScenario('changeUsernameBanned');

совсем не хочется, т.к. получается громоздкий и запутанный огород