2016-10-31 10 views
0

Railsでは、モデルのカスタム検証メソッドを記述できます。バリデータは、そのバリデーションを定義したいアクションを実行したいときに呼び出されます。これらのバリデータは、validates_with CustomValidatorまたはvalidates :attribute, custom_validator: trueなどで呼び出すことができます。検証ヘルパーの使用とコントローラからのカスタム検証メソッドの呼び出しの違いは何ですか?

関連するコントローラからモデルのクラスメソッドを呼び出すこともできます。これらのヘルパーを使用し、Model.custom_validator(params)のように、コントローラから直接オブジェクトのバリデータメソッドを呼び出すことの違いは何ですか?

これらのヘルパーはコントローラをリーンに保つか、より根本的な理由がありますか?

答えて

1

これらのバリデータはvalidates_with CustomValidatorまたはvalidates :attribute, custom_validator: true

間違って呼び出すことができます。それらはのバリデーションを定義する方法であり、それらを呼び出すことはありません。検証は自動的に開始されます。各保存の前に、たとえば。

これらのヘルパーはコントローラをリーンに保つか、より根本的な理由がありますか?

実際には両方とも。検証ロジックはコントローラに属していません。それはモデルで行うか、あなたがその種の人であれば、form objectsで行う必要があります。コントローラは、パラメータの解析、認証の実施、正しいビューのレンダリングなどに注意しなければなりません。検証さえ認識してはいけません。

+0

バリデーションを定義する方法について私はあなたに同意しますが、私は間違っていました。これらのヘルパーを使用して検証するときに呼び出されるメソッドを定義できると言うのが正しいでしょうか? – RM3

+0

@ RM3:これも間違っています:) –

+0

Validatorクラスを継承するクラスとして別にバリデーターを定義します。次に、これらのヘルパーは、検証されるレコード/ものを、それが指し示すバリデータに渡しますか? – RM3

関連する問題