よくこの誤解に今まで気づかなかったものだと半ば驚きつつ、恥を晒す。

バリデーションはいかなる場合でも『渡された値』に対してのみ行われるということ。

『渡されなかった値』に対して、「おい、渡せよボケカス!」とは注意してくれない。

まぁ、当たり前、ですよね。。。(笑)

Model のバリデーションルールで notempty を定義したフィールドに関して、保存時に空の値を渡すと「何やってんだコラヽ(`Д´)ノ」とありがたいお言葉を頂戴できるのですが、フィールドのセットそのものを渡さなかった場合、何も起きずに素通りしてしまうわけです。

今まで気づかなかったのは、たまたま入力フォームの作成時にフィールドの漏れがなかったということです。