【问题标题】:Grouping by into a list with activerecord in rails在rails中使用activerecord分组到列表中
【发布时间】:2020-04-15 21:17:50
【问题描述】:

我需要实现与How to get list of values in GROUP_BY clause? 完全相同的东西,但我需要在 rails 4.2.1 中使用活动记录查询接口。

我只到此为止。

Roles.where(id: 2)
        .select("user_roles.id, user_roles.role, GROUP_CONCAT(DISTINCT roles.group_id SEPARATOR ',') ")
        .group(:role)

但这只会返回一个ActiveRecord::Relationobject,其中包含一个具有idrole 的条目。

我如何在活动记录中实现同样的目标,而无需拉入所有关系并手动构建这样的对象?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 activerecord


    【解决方案1】:

    Roles.where(id: 2) 已经返回单条记录。您可以改为从 users 开始并加入 roles 表做类似的事情。

    User.
      joins(user_roles: :roles).
      where('roles.id = 2').
      select("user_roles.role, GROUP_CONCAT(DISTINCT roles.group_id SEPARATOR ',') ").
      group(:role)
    

    或者,如果您有 user_roles 的模型,请从它开始,因为您仍然不会从 users 查询任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-15
      相关资源
      最近更新 更多