有两种模式:微博和用户。
“micropost”包含4列:名称、类型、user_id和id
"users"包含4列:名称、类型、地址和id
微博属于用户,用户包含许多微博。
我想知道每个用户有多少微博,但由于某种原因,我无法让查询正常工作。
我尝试的查询是:
User.joins(:microposts).group("users.id").select("users.*, count(microposts.id) as postcount")这只从users表中提取属性,但从micropost表中排除这些列,也不包括我创建的count列。
出于某种原因,
User.joins(:microposts).group("users.id").count工作,但它只返回user.id和计数。我也想拉其他的柱子。
我还尝试使用“include”而不是"joins",但这只会返回users表的所有列,而micropost表中没有返回。
User.includes(:microposts).group("users.id").select("users.*, count(microposts.id) as postcount")有人能帮忙吗?谢谢!
发布于 2014-09-09 17:37:13
我想你需要joins和includes。
User.joins(:microposts).
includes(:microposts).
group("users.id").
select("users.*, count(microposts.id) as postcount")发布于 2014-04-26 06:21:49
你打算怎么用它?
如果您想遍历用户并同时显示用户属性和微博,您只需这样做:
<% @users.each do |user| %>
<%= user.microposts.size %>
<%= other_user_attributes %>
<%= user.microposts.each do |micropost| %>
<%= micropost_attributes %>
<% end %>
<% end %>附注:如果还希望返回micropost属性,则可以在select查询中这样做。如果你加上“microposts.title as micropost_title”,它也会返回微博标题。但是,如果您根据用户id进行分组,这是没有意义的,因为一个用户可以有多个微站。
https://stackoverflow.com/questions/23307188
复制相似问题