Go Revel Validation

models内のValidation関数の変数名

func (hotel Hotel) Validate(v *revel.Validation) {

controllers内のリクエスト受け取りの変数

func (c Hotels) ConfirmBooking(id int, hotel models.Hotel) revel.Result {
        hotel.Validate(c.Validation)
	if c.Validation.HasErrors() {
		c.Validation.Keep()
		c.FlashParams()
		return c.Redirect(routes.Hotels.Book(id))
	}

HTML中の変数

{{.hotel}}

は、変数名(この例ではhotel)が一致してないと、エラー表示してくれない
ダックタイピング(ポリモーフィズム)してるっしょとか、期待しちゃ駄目らしぃ。
注意:エラーチェックはかかるけど、エラーの表示がアレになる。

更に・・・。
エラーメッセージは、(英語でもある程度わかるものだが)「使えねぇ」。
i18n対応だからmessage.jaとか用意したら良いのだろうが・・・今はそんな気分じゃねぇ。
それに、メッセージの内容が以下なので、期待できないと思うのは仕方ないように思えるが、どうなんでしょ。

[Required Must match ^[0-9]{2,4}-[0-9]{2,4}-[0-9]{3,4}$]

ちなみに、「未入力」と「電話番号」チェックですが、文章は自分たちで(ry
こんなの簡単に表示してくれるRails様スゲ━━━━━━ヽ(゚Д゚)ノ━━━━━━!!!!
まだ調べてないけど、メッセージをきれいにするには、チュートリアルよろしく

	v.Required(hotel.Address).Message("住所が未入力です。")
	v.Match(hotel.Tel, RegTelNum).Message("電話番号が変です。")
	if hotel.Fax != "" {
		v.Match(hotel.Fax, RegTelNum).Message("FAX番号が変です。")
	}

日本語OK。
ここに、書いておくと「未入力OKフィールド」であってもチェックされる。
なので、未入力を許すフィールドでチェックをするならIF分で値が有る場合としないといけない(ようである)。

Railsの基本理念は「同じことを繰り返さない」(DRY:Don't Repeat Yourself)と「設定より規約」(CoC:Convention over Configuration)である。

Revelは、まだ・・・いや、言うまい。ワシはまだにわかだから。