【发布时间】:2021-05-07 09:47:48
【问题描述】:
我需要从 ActiveRecord 获取一些数据,我有以下两个表 Department 和 users 我有一个问题,我得到一个哈希,其中用户给我 user_ids 和电子邮件,现在我想创建哈希容器用户、部门和特定格式的电子邮件。我已经尝试了很多地图/选择,但仍然无法找到任何简单的方法。
class User < ApplicationRecord
belongs_to :department
end
和部门
class Department < ApplicationRecord
has_many :users
end
我从用户那里得到以下值
sample_params = [{ user_id: 1, email: 'example1@example.com' },
{ user_id: 5, email: 'example5@example.com' },
{ user_id: 13, email: 'example13@example.com'}]
现在我已经从数据库和其他数据中检索部门并加入一个巨大的哈希,以便我可以将它添加到我的班级。我可以通过以下命令获取所有用户
users = User.where(id: sample_params.map{ |m| m[:user_id] })
如果我运行以下命令,我将获得所有用户的整个 ActiveRecord 对象,我将获得所有 user_id 和 project_id
users.map { |u| {user_id: u.id, department_id: u.department_id } }
我会得到这个
[{:user_id=>1, :department_id=>3},
{:user_id=>5, :department_id=>3},
{:user_id=>13, :department_id=>2}]
但我想创建以下哈希,有没有简单的方法可以直接使用查询或其他几行来完成,我可以尝试使用迭代,但这会很长而且很复杂。因为我还需要在其中合并电子邮件并添加一个项目而不是同一个项目多个 id。
[
{department_id: 1, users: [{user_id: 1, email: 'example1@example.com'},
{user_id: 5, email: 'example5@example.com'}]},
{department_id: 2, users: [{ user_id: 13, email: 'example13@example.com']
我这里使用的是样本数据,实际数据非常非常大,包括数百个用户和许多部门。
【问题讨论】:
标签: ruby-on-rails activerecord