【问题标题】:Rails 4, Return Query both data and total countRails 4,返回查询数据和总数
【发布时间】: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

【问题讨论】:

    标签: postgresql ruby-on-rails-4


    【解决方案1】:

    您应该将这两个结果保存在单独的变量中。

    roles = Role.joins(:users).group("roles.id")
    
    roles_count = roles.count
    

    由于roles包含,表行数组,并且count只有一个值,所以应该分开保存。

    如果您将两者都放在单个对象中,则很难处理这些值

    【讨论】:

    • 所以最后没有其他方法可以将total_users组合成角色表数组??
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-12-02
    • 2018-04-20
    • 2015-06-03
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    相关资源
    最近更新 更多