我正在尝试显示每个用户的最后一篇文章并且已经搞砸了一段时间,我无法解决它。
我的用户关系有很多帖子和帖子属于用户。 当我使用下面的代码时,它会正确地为每个用户设置电子邮件地址,但它会将每个帖子的值作为最后一个整体值(而不是该特定用户的最后一个值)。
<% @users.each do |u| %>
<%= @posts.last.total %>
<%= u.email %>
<% end %>
(总计是在帖子模型中执行的计算并保存在数据库中。)
答案 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所需的帖子。