如何在rails上的ruby中显示每个用户的最后帖子?

时间:2017-07-12 14:46:28

标签: ruby ruby-on-rails-4

我正在尝试显示每个用户的最后一篇文章并且已经搞砸了一段时间,我无法解决它。

我的用户关系有很多帖子和帖子属于用户。 当我使用下面的代码时,它会正确地为每个用户设置电子邮件地址,但它会将每个帖子的值作为最后一个整体值(而不是该特定用户的最后一个值)。

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

(总计是在帖子模型中执行的计算并保存在数据库中。)

2 个答案:

答案 0 :(得分:0)

您可以尝试使用此代码,将@posts更改为u.posts

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

答案 1 :(得分:0)

如果您有超过一定数量的用户和帖子,那么我会考虑尝试减少您发出的查询数量。

您可以非常快速地获得每个user_id的最大post_id ...

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

...并获取所需帖子的哈希值......

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

...然后引用该哈希以获取用户ID所需的帖子。