Go Revel Validation Unique 独自関数を作る サクッとできちゃった♥(๑´ڡ`๑)てへぺろ 編
あーあれです。
綴りがまちがってました(;^^)ヘ..
でも、ワシが間違ってたんじゃないです。
あ(; ・`д・´)いやでも、チェックしなかったワシが・・・
まず、その証拠から
http://stackoverflow.com/questions/24112433/form-input-validation-in-revel
type Validator interface { IsSatisfied(interface{}) bool DefaultMessage() string } type usernameChecker struct {} func(u usernameChecker) IsSatisified(i interface{}) bool { s, k := i.(string) if !k { return false }
IsSatisified
わかりますかね。
ちょっとわかりにくいですよね。
どどどどど、こらぁ(ノ`Д´)ノ彡┻━┻
ちなみに、DB絡みのチェックだと・・・
import ( _ "fmt" "github.com/coopernurse/gorp" _ "github.com/revel/revel" "yourapp/app/models" ) type usernameChecker struct { Dbm *gorp.Transaction } func(u usernameChecker) IsSatisfied(i interface{}) bool { s, ok := i.(string) if !ok { return false } /* check if s exists in DB */ membername := i.(string) members := Dbm.Select(models.Member{}, `select * from member where membername = $1`, membername) if len(members) != 0 { return false } return true } func(u usernameChecker) DefaultMessage() string { return "既に登録されています!!" }
func (c MyApp) SaveUser(username string) revel.Result { c.Validation.Check(username, usernameChecker{c.Txn}).Message("more specific or translated message in case of failure") }
とかやってやると、ホクホクになれます。
人は、力抜いた瞬間に答えが浮かぶ・・・・こともあったとさ。