2009-04-10 6 views
0

MVCフレームワークを使用しているときに、ビューで何個のデータアクセスを行う必要があるのでしょうか。 例:私のアプリケーションには、お気に入りのすべてのアーティストのリストと各アーティストのリストが表示され、そのアーティストのすべての曲のリストが表示されます。 質問は、アーティストリストのみをビューに渡すか、すべてのデータ(アーティスト+曲)も渡すべきですか?MVCアプリケーションのビューからビジネスオブジェクトを反復すべきですか?

Ps:私はRuby On RailsとActiveRecordを使用しています。

答えて

2

Artistのモデルクラスがソングのコレクションを提供する手段を持っているとすれば、コントローラが両方のビューを明示的に渡す必要はありません。

3

ビュー内でdbデータをプルしないでください。コントローラのジョブです。あなたの意見では、コントローラメソッドによって読み込まれたデータのみを参照するべきです。

あなたの場合は、アーティストリストを作成することを意味します。:includeを使用すると、曲がプリロードされます。懸念の

  • 分離:

    # In your controller 
    @artists = Artist.find(:all, :include => :songs) 
    

    メソッドのコメントを受けてEDIT、ビューからデータを引っ張って2つの問題があります。これは、コントローラでデータを取得するだけでよいと言ったときに私が言っていたことです。コントローラはMVCでデータアクセスを処理し、理論的にはビューにはロジックが含まれていません。確かに時々あなたのビューにいくつかのデータ取得を置くことは簡単ですが、それはかなり醜いです。

  • 効率性は、クエリの数またはクエリ結果のサイズのいずれかで、どのメソッドがどのようなものかというと思います。 1つのページに十分なデータをロードして問題が発生した場合、リファクタリング(または少なくともページング)を示唆しているのではないかと思います。
+0

これは本当に重要ですか?特に<%= artist.songs%>だけでなく、特に曲が要求されないことを意味する条件付きロジックがある場合はどうでしょうか。私は問題を理解していないかもしれません。私はARが遅延読み込みをしていると思っていました。 – method

関連する問題