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,返回查询数据和总数的主要内容,如果未能解决你的问题,请参考以下文章

查询数据库并根据搜索参数返回每个位置的“总数”

一条sql语句实现分页查询,且能返回记录总数

Rails / SQL 查询查找最近的事件

SQL Server存储过程同时返回分页结果集和总数

如何使用 ElasticSearch-Rails 查询 dsl 返回相关关系

mybatis单表分组查询如何返回总数,最大值等,同时要返回分组条件