0

コントローラーに別の Rails アプリとデータベースから受信したデータがあります (これはコントローラーにある必要があります) ウィザードで別のステップを許可する前にモデルで検証できるように、このデータを取得したいです (私の他のものを参照)いくつかのコード例についての質問)

私の問題は、これが MVC に違反しているため、モデルのコントローラーからこのデータを直接取得できないことです。

私の質問は、モデル内のコントローラー データを確認するにはどうすればよいですか?

  • このデータ / true - false 応答をビューにロードしてから、これをモデルにリンクする必要がありますか? (これをビューに表示したくないので、これを行う方法がよくわかっていません)

  • このデータをルートに渡しexample/data.json、モデルでこれをチェックする必要がありますか? (私はまた、モデルでそこからこの data.json を使用する方法を考え出していません)

正しい方向へのヘルプ/ステアリングは非常に役立ちます。(これを行うためにgemを使用することもできません

4

2 に答える 2

1

最初に、それ自体に含まれていないデータによってモデルを検証しないように、2 重に確認してください。モデルは現在の状態を検証する必要がありますが、この状態になった方法 (たとえば、どのユーザーがモデルをこの状態にしたか)は検証しないでください。

次に、モデル内でコントローラー メソッドを使用しないでください。コントローラーにビジネス ロジックが含まれている場合は、そのロジックをコントローラーとモデルの両方で使用される 3 番目のクラスに抽出します。

さらに、コントローラーにデータがあり、モデルにアクセスできますよね?. したがって、コントローラ メソッドを使用している場合、たとえばフィルタまたはアクションの前にある場合、次のように、そのデータを取得してモデルに渡すことができます。

def controller method
  hey_model.is_this_correct?(data)
end

コントローラーが要求に応答した後(たとえば、ウィザードの次のステップ、つまり次の要求時) にそのデータをチェックする必要があると言う場合は、その値を要求の間のどこかに保存する必要があります。

これこそがステートレス HTTP のポイントです。明示的に行うまで、リクエスト間でデータは保存されません。値を Cookie またはデータベースに保存できます。

于 2013-01-15T01:47:27.703 に答える