web アプリケーションの入力の validator の悩みを
最近は考える事が多くて、全然しっくりこなくて困ってる。
rails 的な model に validator を寄せるのが良い時もあるし、やなときもあると思っていて、
controller で formvalidator に request object をぶつけて validate すると、model を他の controller ( api と web, admin とか ) で使う時に不安だなぁとは思う。
けど、同じ valiadte rule を各 controller でやるのはちょっと... みたいな感じもする。
page parameter は 1 から 200 までみたいなのはやっておいたほうがなんとなく安心だなぁというのもあるので、じゃあ data::validator で page 型を作るか ? みたいなことも考える。
けど、全部の parameter の型を作ってると値が変わるだけで新しい型を作る必要があるのでちょっと... みたいな感じはする
あと api には limit, offset, web からは page っていう parameter で model に入力すると
my $rule = Data::Validator->new( page => { isa => 'Page', xor => [qw/limit offset/], default => 1}, limit => { isa => 'Integer だけど x 値まで', }, offset => { isa => 'Integer だけど y 値まで', } );
みたいな感じでその後 model でよしなに変換するといいのかもしれないなぁと思いつつも、data::validator のエラーメッセージはちょっと... みたいなのと formvalidator 的に rule を and で気楽に足していけないのでちょっと.... みたいな感じはする。 ( or は Hoge | Fuga と出来る、、 )
model と controller どっちでもがちがちに validate すると rule の管理が大変そうだしそもそもちょっと... という感じもしてる。
なんとなく formvalidator::lite ぽい感じでエラーメッセージとかもカスタマイズ出来て、hash だけじゃなくて、request もぶつけられてだけど、strong_parameter みたいに意図しないと request の parameter は model からは触れない、$request->upload まわりもよしなな感じで defeult 値も入れられると硬いけど色々出来るのかな、、、ってはなってる....
どうにもならない感じがする。