2012-04-16 13 views
1

私はRails 3アプリでいくつかのフォームビューを書いています。フロントエンドとバックエンドのフォームをDRY形式で検証するために他の人が何をしているのだろうかと思います。フロントエンドのフォームを検証するためにバックエンド検証のみに依存するのは賢明ですか?

もちろん、レール検証なしでバックエンドの検証を回避する方法はないようです。それを知って、フロントエンドで同じバリデーションを書いているのはとても乾燥しているようには見えません。 2つの場所でバリデーションを書くことについていくつかのスレッドを読んだことがありますが、そうする本当の理由がない限り、私はむしろそうはなりません。

レールの魔法を知っていると、DRYの方法でフロントエンドとバックエンドの両方を検証するためのシンプルで簡単な方法がありますが、まだそれを発見していません。おそらく有効性の宝石ですか?

私はUser Modelでバリデータメソッドを呼び出すフロントエンドでajaxを使用すると良いと思っています。例えば、クライアント側の私のユーザ名フィールドはjqueryキー押下を聞き、次にフィールドの内容を「checkuser」(またはそのようなもの)というユーザコントローラメソッドに送信します。モデルあたり5つ以上のフィールドがあることを考えれば、私のコントローラには多くのフィールドチェックメソッドが追加されてしまうかもしれません...あまりにも醜いのですか?

私はこのようにすることについて知っておくべき警告がありますか?私は本当にjavascriptを無効にする人々について心配する必要がありますか?

答えて

1

私はASP.NETの背景から来ている間、この質問に答えるつもりです。だから間違いがあったら、間違いを許してください。

ASP.NETには、DataAnnotationの概念があります。これは、すべての検証済みクラスについて、メタデータが「Required」や「MinLength(8)」などの属性で指定されています。これにより、DRYの検証が提供されます。クライアントでは、jquery関数に自動的にマップされ、サーバー上ではランタイムで使用されます。

ところで、ほとんどの場合、クライアント側で検証するときにサーバーの負荷が大きくなるのを防ぎ、サーバー側で検証するときに誤ったデータがデータベースに挿入されないようにするため、両面を検証する必要があります。

単純なグーグルの後、このso postに記載されているように、同様のアプローチがレールに存在するようです。

+0

ええ、私はあなたが正しいと思う、クライアントの要求を維持することは、おそらくクライアント上でコードを複製するのに十分な理由です。 – botbot

関連する問題