我有用戶表,其中包含許多字段,包括部門。 departmentid只是一個字符串。每個部門可以有不同的用戶。可以從用戶表中找到所有部門,而不需要重複。Ruby on Rails:從用戶中查找所有部門表
我試圖從用戶表中找到所有的部門,但結果包含部門重複。如何解決這個問題。
在此先感謝...
我有用戶表,其中包含許多字段,包括部門。 departmentid只是一個字符串。每個部門可以有不同的用戶。可以從用戶表中找到所有部門,而不需要重複。Ruby on Rails:從用戶中查找所有部門表
我試圖從用戶表中找到所有的部門,但結果包含部門重複。如何解決這個問題。
在此先感謝...
SQL
select distinct department_id from users
Ruby代碼
User.all.map(&:department_id).compact.uniq
也導軌3
User.select('departement_id').uniq
你可能想使用一個SQL查詢讓數據庫引擎來處理數學和避免創建Ruby對象,它的速度更快的選擇:
Department.where("id in (select distinct department_id from users)").all
現在,如果你想這樣做軌道方式,你仍然可以做:
Department.where(id: User.select("distinct department_id").map(&:department_id)).all
注意用這個代碼最後一行,您可以避免創建用戶屬性的完整映射,因爲所有您感興趣的是department_id,並且它避免通過每個User對象來收集ID並使它們變爲uniq,通過使用select distinct數據庫引擎將只需返回單個值而不重複
Btw'User.select('email').uniq.to_sql'在rails3中給出 '=>「SELECT DISTINCT email FROM users」' –
是的,你是對的,很高興知道,thx的反饋:) – rorra
User.se lect('departmentid').uniq工作正常........謝謝。 – Cyber