ユニークチェックはどこですればいいのだろう?

 たとえば、ユーザアカウントを登録するような Web アプリケーションを Teeda で作るとします。ユーザアカウントですから、ユーザ名は重複してはいけません。そのため DB にはユニークインデックスを張ってあるとします。

 さて、このユーザ名のユニークチェックはどこですればいいでしょうか? 私の場合は、ユニークチェックのバリデータを作って、「ユニークチェックをしたフラグ」を立てます。それで、他のバリデータにひっかかるか、無事アカウントを追加できたらこのフラグを落とします。もし、ユニークチェックをするときにこのフラグがすでに立っていたらエラーです。



 ……んー。スマートじゃないな。

 アクションで解決すべきという意見も聞かれますが、そうすると、エラーメッセージが別階層(?)になります。つまり、たとえば、ユニークチェックに引っかかるユーザ名が入力されており、かつ、必須入力のパスワードが入力されていない場合、エラーメッセージはパスワードが入力されていませんというのしか出せません。


 これでいいのかなぁ? 実際、利用者はこれで違和感を覚えないのかなぁ?



 ということで、私のバリデータは DB にアクセスするので TeedaTestCase で S2Unit にある readXls メソッドが使えないのは痛いなぁ。