Backbone.js Modelのvalidateメソッドの戻り値としてどんな値を返すべき?

Backbone.jsでは、Modelにvalidateメソッドを実装することで、Modelの各属性の値を検証することができます。

saveメソッドを呼び出したり、{validate: true}オプション付きでsetメソッドを呼び出したりしたタイミングでvalidateメソッドが実行され、自由に値の検証を行う感じ。属性の値に不備があった場合は、validateメソッドの戻り値としてエラー内容を表す値を返すことで、saveメソッドやsetメソッドの実行がキャンセルされる、といった仕組みです。

で、本題ですが、このエラー内容を表す値としてどんな値を返すべきなのかについて、最近少し悩んでいます。

例えば、Backbone.jsの公式サイトにあるサンプルコードでは、validateメソッドの戻り値として、以下のようにエラーメッセージを表す文字列を返しています。

http://backbonejs.org/#Model-validate

バリデーションエラーが発生した場合、validateメソッドの戻り値は、invalidイベントのイベントハンドラに引数(error)として渡されます。同じくサンプルコードのイベントハンドラ内では、引数として受け取ったエラーメッセージを使ってアラートを表示していますね。

ただですね、これだと一点困ることがあります。例えば、上記のコードでは、バリデーションエラーが発生した具体的な属性名をイベントハンドラ内で参照できないんです。

どうしてもバリデーションエラーが発生した属性名を参照したい場合はどうすればいいでしょうか?例えば、以下のようなJavaScriptオブジェクトを戻り値として返すようにしてみるのはどうでしょう?

オブジェクトのプロパティ名にバリデーションエラーが発生した属性名を、値にエラーメッセージを格納しました。それとも、こんなのはどうかな?

attributeプロパティの値にバリデーションエラーが発生した属性名を、messageプロパティの値にエラーメッセージを格納しました。こっちの方がinvalidイベントのイベントハンドラ内で扱いやすそうですね。

といった具合に、何度か試行錯誤した結果、最後のサンプルコードで紹介したパターンに落ち着きそうなのですが、あんまり自信がないです。Backbone.jsで特に規定されているわけではないので、コーディング規約などでしっかりルールを決めないと、プロジェクト内にいろんなパターンが登場してしまい、統一感が無くなってしまう恐れがあります。なので、早い段階で、今のうちに決めておきたいんですよね。

みなさんは、validationメソッドの戻り値としてどんな値を返していますか?ケースバイケースかもしれませんが、「うちではこうやってるよ」と教えていただけると嬉しいです。

それではー!