ユニークチェックはどこですればいいのだろう?
たとえば、ユーザアカウントを登録するような Web アプリケーションを Teeda で作るとします。ユーザアカウントですから、ユーザ名は重複してはいけません。そのため DB にはユニークインデックスを張ってあるとします。
さて、このユーザ名のユニークチェックはどこですればいいでしょうか? 私の場合は、ユニークチェックのバリデータを作って、「ユニークチェックをしたフラグ」を立てます。それで、他のバリデータにひっかかるか、無事アカウントを追加できたらこのフラグを落とします。もし、ユニークチェックをするときにこのフラグがすでに立っていたらエラーです。
……んー。スマートじゃないな。
アクションで解決すべきという意見も聞かれますが、そうすると、エラーメッセージが別階層(?)になります。つまり、たとえば、ユニークチェックに引っかかるユーザ名が入力されており、かつ、必須入力のパスワードが入力されていない場合、エラーメッセージはパスワードが入力されていませんというのしか出せません。
これでいいのかなぁ? 実際、利用者はこれで違和感を覚えないのかなぁ?
ということで、私のバリデータは DB にアクセスするので TeedaTestCase で S2Unit にある readXls メソッドが使えないのは痛いなぁ。