Rails 4,返回查询数据和总数
Posted
技术标签:
【中文标题】Rails 4,返回查询数据和总数【英文标题】:Rails 4, Return Query both data and total count 【发布时间】:2014-08-28 05:05:48 【问题描述】:新手提醒...
例如: 我有表角色和表用户 角色 has_many 用户
在 rails 4 中,我可以通过对 DB 的 1 次查询来显示每个角色中的 total_users 计数的所有角色吗? 因此,在角色的每条记录中,都有 1 个名为 total_users 的附加列,total_users 是从 User 计算的,其中 "users"."role_id" = "roles"."id"
我试了很多次都不行,我试过了:
roles = Role.joins(:users).group("roles.id").count
它只是计数的返回值。 我想要的是,查询的返回值既是角色中的所有数据,也是单个查询中的用户数。
这是我希望的结果:
[#<Role id: 1, holding_company_id: 1, name: "admin", created_at: nil, updated_at: nil, description: nil, **total_users: ...** >, #<Role id: 2, holding_company_id: 2, name: "user", created_at: nil, updated_at: nil, description: nil, **total_users: ...**>]
任何人都可以帮助我解决这个非常简单的问题吗?我用的是postgreSQL
【问题讨论】:
【参考方案1】:您应该将这两个结果保存在单独的变量中。
roles = Role.joins(:users).group("roles.id")
roles_count = roles.count
由于roles包含,表行数组,并且count只有一个值,所以应该分开保存。
如果您将两者都放在单个对象中,则很难处理这些值
【讨论】:
所以最后没有其他方法可以将total_users组合成角色表数组??以上是关于Rails 4,返回查询数据和总数的主要内容,如果未能解决你的问题,请参考以下文章