2011-12-04 8 views
0

マルチ/クロスモデル検証?だから私は持っている私のアプリケーションで

  • MODELA
  • ModelB
  • ModelC
  • ModelD

MODELAのための私のコントローラでは、私が "is_verified" と呼ばれるカスタム関数を作成しました。 is_verifiedでは、モデルA/B/C/Dの複数のactiverecord検索を呼び出して特定のデータ行を取り出し、比較を行い、条件が合格するとis_verifiedは 'true'を返し、関数は 'false'を返し、ユーザーにエラーが発生しました

私がやっていることは単純であり、仕事が終わっていますが、コントローラ内から自分の機能を検証するために複数のテーブルを照会して条件を実行するのはベストプラクティスではありません。

上記の私の状況のようにモデル間の検証を実行するのがベストプラクティスです。

答えて

0

私は検証をモデルに移しました。また、各モデルで複数の検証関連のメソッドを作成して呼び出すだけです。 Aのインスタンスを渡されたとき、彼らはそのインスタンスが有効でないことを何らかの理由がある場合は、見ることができ、あなたのモデルのその後

def valid? 
    B.valid?(self) && C.valid?(self) && D.valid?(self) 
end 

それぞれ、:

理想的には、モデルAのようなものを持っているでしょう。

できるだけ細かい検証を分けて、テスト/検証する方が簡単です。

+0

興味深い。これも私が考えていたものです。私は(自己)は、その特定のモデルに渡している変数またはオブジェクトであると仮定? – overworkedasian

+0

Selfは、検証しようとしているAのインスタンスです。 –

関連する問題