Resetscope() Para Funcion Save()

Hola amigos,

me ha surgido un problema.

Tengo un defaultScope que siempre aplica una condición a una tabla (username,password,cod_cliente):

Username es un email unico (PrimaryKey única). La intencion de este defaultScope es que solo se puedan hacer operaciones de CRUD para los que se cumpla.


 

    /**

     * @return array conditions

     */

    

    public function defaultScope()

    {

        $x=Yii::app()->getSession()->get('usuario'); //el cod_cliente lo sacamos de la session

        return array(

            'condition'=>"cod_cliente=".$x['COD_CLIENTE'],

        );

    }



En el rules:


array('username', 'unique', 'message'=>'Ya existe el email!','on'=>'insert')

El problema es que al hacer un save() introduciendo en el formulario un username que ya existe, el formulario no muestra el mensaje de error correspondiente y continua, lanzando entonces un error 500 de duplicate entry.

Si el usurname duplicado pertenece al usuario en session, el formulario si que muestra el message del rules.

Como podría desactivar el defaultScope() para el Save()?

Ya he probado a hacer $model->resetScope()->save() pero no funciona.

Saludos y gracias de antemano.

He podido solventar el error usando beforeValidation()




protected function beforeValidate()

{

        $command = Yii::app()->db->createCommand("SELECT count(username) as counter FROM mailbox WHERE username LIKE '$this->username'");

        $record=$command->queryScalar();

        

        if($record>0)

        {

            $this->addError("username", "Ya existe el email!");

        }

        return parent::beforeValidate();

}



EDITO:

Si solo queremos que funcione en el insert, pero no en el update:




protected function beforeValidate()

    {

        $command = Yii::app()->db->createCommand("SELECT count(username) as counter FROM mailbox WHERE username LIKE '$this->username'");

        $record=$command->queryScalar();

        

        if($record>0 && $this->isNewRecord)

            $this->addError("username", "Ya existe el email!");

);

        

        return parent::beforeValidate();

    }

Aunque si alguien sabe como deshabilitar el defaultScope para el Save, sería de gran ayuda.

Saludos.