Ruby on rails RubyonRails:从用户表中查找所有部门ID

Ruby on rails RubyonRails:从用户表中查找所有部门ID,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个Users表,其中包含许多字段,包括departmentid。departmentid只是一个字符串。每个部门ID可以有不同的用户。是否可以不重复地从用户表中查找所有部门ID 我试图从users表中查找所有departmentid,但结果包含departmentid的重复。如何解决此问题 提前感谢…SQL select distinct department_id from users Ruby代码 User.all.map(&:department_id).compact.u

我有一个Users表,其中包含许多字段,包括departmentid。departmentid只是一个字符串。每个部门ID可以有不同的用户。是否可以不重复地从用户表中查找所有部门ID

我试图从users表中查找所有departmentid,但结果包含departmentid的重复。如何解决此问题

提前感谢…

SQL

select distinct department_id from users
Ruby代码

User.all.map(&:department_id).compact.uniq
同样在rails 3中

User.select('departement_id').uniq

您可能希望使用sql查询让db引擎处理数学运算并避免创建ruby对象,这是更快的选项:

Department.where("id in (select distinct department_id from users)").all
现在,如果您想以rails的方式进行操作,您仍然可以执行以下操作:

Department.where(id: User.select("distinct department_id").map(&:department_id)).all
请注意,使用最后一行代码,您可以避免创建用户属性的完整映射,因为您感兴趣的只是部门id,而且它还可以避免为了收集id并使其统一而遍历每个用户对象,通过使用select distinct,数据库引擎将只返回单个值而不重复

Btw
User.select('email')。uniq.to_sql
在rails3
=>“从用户选择distinct email”