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

コメント