Вы можете создать функцию в текущем контроллере и вызвать ее в самом выражении.
Пример с сообщением в блоге:
Поместите эту функцию в текущий контроллер, где ваши правила доступаare.
function isPostOwner() {
$post = Post::model()->findByPk($_GET['post_id']);
$owner_id = $post->owner_id;
if(Yii::app()->user->id === $owner_id)
return true;
return false;
}
А в разделе accessRules вы делаете это:
public function accessRules(){
return array(
...
array('allow',
'actions'=>array('update'),
'expression'=>"Yii::app()->controller->isPostOwner()",
));
}
Надеюсь, что поможет.