CakePHP のバリデーションの注意点

どうやら、配列のキーが存在しない場合、バリデーションはスルーしてしまうみたい。

http://www.1x1.jp/blog/2007/04/cakephp_model_validates.html

これはCakePHPの仕様だと思うのだが、マニュアルには書いてなかったので、ちょっと焦った。

簡単な対処法は、キーが存在しなければ追加してやること。

<?php
  if (!isset($data['User']['address'])) {
    $data['User']['address'] = null;
  }

これで、チェックされるようになった。

追記(2/14)

こんな表記が…。
http://book.cakephp.org/ja/complete/125/%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%83%90%E3%83%AA%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-Data-Validation#required-129

もし「required」がtrueであれば、このフィールドはデータの配列中に存在しなければなりません。
(中略)・・・もし無ければ、バリデーションは失敗します。このキーのデフォルトはfalseです。

ありゃりゃ。required は明示的に true にしないといけない。そういうこと??