Guardar Historial De Una Tabla

Muy buenas!

Llevo tiempo trabajando con yii, y ahora me he embarcado en un proyecto nuevo utilizando lo. Mi duda es la siguiente:

Hay alguna manera que en el momento de guardar un modelo se genere un histórico?(guardado debidamente en una tabla histórica de este modelo). Hasta ahora lo he hecho a "mano" ya que cada vez que realizaba un save de modelo, tambien generaba un histórico de este y lo guardaba. Lo que busco es algo más dinámico, algo del estilo de los "behavior" para realizar esa tarea automáticamente después de guardar un registro.

No se si me he explicado bien…

Desde ya muchas gracias por sus aportaciones.

Buenas.

Yo creo mis objetos para hacer el histórico y los llamo después del save.

Creo q existe una extensión llamada AuditTrail o algo así q te permite hacerlo, pero realmente hace lo mismo que si tu te creas tus objetos.

Un saludo.

Si es lo que yo realizaba, pero me parecía muy tedioso tener que estar a crear el objeto cada ves que quería realizar un volcado.

Pues dando le vueltas al tema conseguí esto:

private $model_H;


public function beforeSave()

    {    	

    	if($this->isNewRecord === false && $this->validate() === true)

    	{

    		$model_Old = $this->findByPk($this->ID_Usuario);

    		

    		if($model_Old != null)

    		{

    			//pasamos los parametros a la variable global

    			$this->model_H = new UsuariosHistorico;

    	    	$this->model_H->attributes = $model_Old->attributes;

    	    	$this->model_H->ID_Usu = Yii::app()->user->getState('ID_Usuario');

    	    	$this->model_H->Tipo_Gest = "A";

    	    	if($this->validate()===false)

    	    	{

    	    		$this->model_H = null;

    	    	}

    		}

    	}    	

    	return parent::beforeSave();

    }


    public function afterSave()

    {

    	if($this->isNewRecord === false && $this->validate() === true && $this->model_H != null)

    	{

    		$this->model_H->save();

    		$this->model_H = null;    		

    	}

    	return parent::afterSave();

    }

Esto lo realizo en el modelo de una de mis tablas. Creo una variable global, en la que después de verificar que se trata de una actualización y no de una inserción, guardo el registro que se va a modificar de la base de datos en la variable $this->model_H antes de realizar el "save"(función beforeSave). Y luego de que se realice la actualización vuelvo a hacer unas comprobaciones y guardo el registro anterior en la tabla histórica y dejo la variable a null.

De esta manera tan solo tengo que llamar al "save" del modelo y el se encargara de guardar en las dos tablas siempre, y sin tener que crear yo el objeto antes.