0

熱心な読み込みでコードを最適化しようとしていますが、関数が呼び出されるたびに、クエリがログで実行されます。

@votes_list = Vote.joins(:user => :profile).where(:post_id => post.id)
@male_votes = @votes_list.where(:profiles => { :gender => 1 }).count
@female_votes = @votes_list.where(:profiles => { :gender => 2 }).count

データベースからフェッチする必要なく、最初のクエリの後にクエリをいくつか作成しようとしていますが、どうすればよいですか?

4

1 に答える 1

2

投票ごとにユーザーとそのプロファイルを熱心に読み込みたいとします。次に、プロファイルで性別ごとに分類されたメモリ内の投票のサブセットを選択できます。

@votes_list = Vote.where(:post_id => post.id, :include => { :user => :profile })
@male_votes = @votes_list.select {|v| v.user.profile.gender == 1}
@female_votes = @votes_list.select {|v| v.user.profile.gender == 2}
于 2013-02-06T17:22:39.253 に答える