2010年1月5日火曜日

CakePHP fixturesを使う際にbeforeSaveとかされない件

誰か良い解決方法知ってたら教えてください

ソースを見てみたら、モデルを経由せずに、普通にINSERT {$table}とかしてるからびっくらこいた。じゃあinsertする前に自力でやりたいことやらせていただく!という感じで解決。

サブクラスのinitで処理して親クラスのinitを呼び出す

(ソースを読み間違ってたらごめんなさいだけど、)残念なことにモデルを使ってsaveしないので、beforeSaveを使っても動かない。ので、再度beforeSaveでやっている手順を記述。あーDRYじゃないよ〜><。

// 独自の暗号化処理の例
class UserFixture extends CakeTestFixture {
 //...省略...
  function init(){
    foreach($this->records as $k => $v){
      $this->records[$k]['password'] = User::encrypt($this->records[$k]['password']);
    }
    parent::init();
  }
}

0 件のコメント: