PR

[CakePHP] ユーザ毎に登録件数制限を設けるバリデート

前回の記事

pc.casey.jp » CakePHP の独自バリデーションルールにハマる :
https://pc.casey.jp/archives/2266

が、ちょっと自信がなかったので改めて。とりあえずこれで動いているっぽいのでいいかな。
この例ではユーザーではなくてグループごとに制限を設けているけれど内容は同じでしょう。
$this->data[‘ItemGroup’][‘group_id’] は、必要に応じて app_controller が勝手にセットするようになっている。

スポンサードリンク

    function limitDuplicates($data, $limit){        
        if(!isset($this->data['ItemGroup']['id'])){
         // new = check count
         $count = $this->find('count', array(
          'recursive' => -1,
          'conditions'=> array(
           'group_id =' => $this->data['ItemGroup']['group_id']
          ),
         ));
         if($count >= $limit) return false;
     }
     // edit = no count, or new under limit
     return true;
    }

ユーザやグループで分ける、つまり、システムを共有する場合は、たぶん、findやsaveをextendsしたほうがいいのだろうがそれはまだ。findの改造なんかはsoftdeleteが参考になるんじゃないかな。

コメント