запись из контроллера Post в в модель VotePost

На сайте есть голосование за пост +/-. осуществляется оно с помощью акшенов Plus и Minus в контроллере Post. Так же имеется таблица vote_pos которая состоит из полей id(автоинкримент), author_id, post_id. Осуществляется проверка если есть в таблице запись с id данного поста и id голосующего пользователя то голос не считается. Возникла такая проблема как из этого акшена произвести добовление строки в базу vote_post, пытаюсь сделать вот так:


                        $for  = Post::model() -> findByPk($_GET['id']);

                        $vote = new VotePost;

                        $criteria=new CDbCriteria;

                        $criteria->condition='post_id='. $_GET['id'];

                        $vote= VotePost::model()->findAll($criteria);

                        foreach($vote as $item) 

                            {

                                if($item->post_id == $for->id &&$item->author_id==$for->author_id)

                                { $i=0;  }

                            }

                        if($i){

                            $for -> rating = intval($for -> rating) + 1;

                            if($for->save()){

                             foreach ($vote as $item) {

                                      $item->post_id = intval($for->id);

                                      $item->author_id = intval($for->author_id);

                                      $item->save();

                                 }

                            }

                            $this->redirect(array('index','id'=>$for->id));

                        } 

Подскажите как сделать это сохранение?

Как-то очень понаверчено всё.




$already_voted = VotePost::model()->find('post_id = :pid AND author_id = :aid', array(':pid' => $_GET['id'], ':aid' => ... (сюда id юзера));

if (!$already_voted) {

    // еще не голосовали

    $vote = new VotePost;

    $vote->author_id = ... (ID юзера);

    $vote->post_id = $_GET['id'];

    $vote->save();

}

А пересчет рейтинга повесить на afterSave и afterDelete модели VotePost.

Не?