前回の記事
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が参考になるんじゃないかな。
コメント