2017-07-12 8 views
0

私は各ユーザーの最後の投稿を表示しようとしているし、しばらくの間混乱して、私はそれを解決することはできません。ruby​​ on railsで各ユーザーの最終投稿を表示する方法は?

私は多くの投稿と投稿がユーザーに属するユーザーを持っています。 以下のコードを使用すると、各ユーザーのメールアドレスが正しく設定されますが、各投稿の値が最終的な全体的な値(その特定のユーザーの最終値ではありません)になります。

<% @users.each do |u| %> 
    <%= @posts.last.total %> 
    <%= u.email %> 
<% end %> 

(合計はデシベルでポストモデルで実行され、保存された計算です。)あなたは、このコードを試してみてください、あなたが持っている場合は

<% @users.each do |u| %> 
    <% if u.posts.size > 0 %> 
    <%= u.posts.last.total %> 
    <%= u.email %> 
    <% end %>  
<% end %> 
+0

'@ posts'には何がありますか?あなたはユーザーをスクロールする前にすべての投稿を取得していますか? –

答えて

0

些細な数のユーザーや投稿以上の場合は、発行しているクエリの数を減らそうとします。

あなたは非常に迅速に...その後

max_post_per_user = Post.where(id: max_post_id_per_user).group_by(:user_id) 

...とをUSER_IDあたりの最大post_idの...

max_post_id_per_user = Post.group(:user_id).maximum(:id) 

を取得...と必要な記事のハッシュを取得することができますそのハッシュを参照して、ユーザーIDに必要な投稿を取得します。

+0

ありがとう@widjajayd私はこれを試しましたが、Nil: 'NilClass 'のための' total'エラーが未定義になります。私はこれが通常、特定のフィールドに何もないときに起こることを知っていますが、私は投稿をチェックしており、それらはすべて価値がありますか? –

+0

ユーザーのいずれかが投稿を持っていないことを意味し、私のコードを編集して確認してください。 – widjajayd

+0

あああなたは正しい2人のユーザーは投稿していません。投稿がないユーザーを無視するように変更するにはどうすればよいですか? –

0

をu.postsする@postsを変更することがあり

+0

これは非常に賢明なDavidのようです、ありがとうございます。 –

関連する問題