ビュー内でdbデータをプルしないでください。コントローラのジョブです。あなたの意見では、コントローラメソッドによって読み込まれたデータのみを参照するべきです。
あなたの場合は、アーティストリストを作成することを意味します。:include
を使用すると、曲がプリロードされます。懸念の
- 分離:
# In your controller
@artists = Artist.find(:all, :include => :songs)
メソッドのコメントを受けてEDIT、ビューからデータを引っ張って2つの問題があります。これは、コントローラでデータを取得するだけでよいと言ったときに私が言っていたことです。コントローラはMVCでデータアクセスを処理し、理論的にはビューにはロジックが含まれていません。確かに時々あなたのビューにいくつかのデータ取得を置くことは簡単ですが、それはかなり醜いです。
- 効率性は、クエリの数またはクエリ結果のサイズのいずれかで、どのメソッドがどのようなものかというと思います。 1つのページに十分なデータをロードして問題が発生した場合、リファクタリング(または少なくともページング)を示唆しているのではないかと思います。
これは本当に重要ですか?特に<%= artist.songs%>だけでなく、特に曲が要求されないことを意味する条件付きロジックがある場合はどうでしょうか。私は問題を理解していないかもしれません。私はARが遅延読み込みをしていると思っていました。 – method