我使用以下代码在视图上显示不同的用户计数:
<%= @miniature.collections.where(status: 'Got').count(:user_id, distinct: true) %> users have this
然后我尝试列出那些不同的用户,但无法弄清楚如何将(:user_id, distinct: true)
合并到此查询中:
<% @miniature.collections.where(status: 'Got').each do |collection| %>
<tr><td><%= link_to collection.user.name, collection.user %></td></tr>
<% end %>
我只是无法让它发挥作用。
答案 0 :(得分:0)
如果您想查找具有“已获取”状态微缩模型的所有用户,则最好从另一侧开始。
控制器:
@miniature = Miniature.find(...)
@users = User.joins(:collections).where(collections: {status: 'Got', miniature: @miniature})
查看:
<%= @users.count %> users have this
<% @users.each do |user| %>
<tr><td><%= link_to user.name, user %></td></tr>
<% end %>
答案 1 :(得分:0)
在@ immaculate.pine的帮助下,我找到了一种方法,使用.uniq
而非(:user_id, distinct: true)
在控制器中我有
@miniature = Miniature.find(params[:miniature_id])
@usergot = User.joins(:collections).where(collections: {status: 'Got', miniature: @miniature}).uniq
@userwant = User.joins(:collections).where(collections: {status: 'Want', miniature: @miniature}).uniq
然后为了计数我只需要打电话
<%= @usergot.count %>
users have this
或确实
<%= @userwant.count %>
users want this
并且列表是
<% @usergot.each do |user| %>
<tr>
<td><%= link_to user.name, user %></td></tr>
<% end %>
完美而不太难看。