CakePHP1.2 からバリデーションがかなり強力になっていますが、レコードを追加するときまたはレコードを更新するときのみにバリデーションルールを適用する指定方法がありました。

var $validate = array(
        'name' => array(
            'required' => true,
            'allowEmpty' => false,
            'on' => 'update'
            'message' => '名前を入力してください',
            ),
        );

on‘ に ‘create‘ と指定すると新規追加のときにチェックされ、’update‘ と指定すると更新時のみチェックされます。新規追加か更新かの判定はデータベースを id で検索してデータがあるかないかで判定します。(当然ですが)
デフォルトは nullnull の場合は新規追加、更新のどちらでもチェックされます。

SNS などであるような登録時には最低限の情報のみ入力させて、本登録後に必須入力項目を入力させるようなときなどに使えそうです。

関連する投稿