ruby-on-rails - 如何将 find_by 应用于数组数组的元素 - Rails
问题描述
我有以下数组数组user_ids
:
@host_and_guest = [
["1299d9c9-e5c9-4e49-b0ff-b986c415eee8", "346b5c2f-a459-4c4f-8193-e0928c86c66c"],
["1299d9c9-e5c9-4e49-b0ff-b986c415eee8", "346b5c2f-a459-4c4f-8193-e0928c86c66c"],
["1299d9c9-e5c9-4e49-b0ff-b986c415eee8", "346b5c2f-a459-4c4f-8193-e0928c86c66c"],
["1299d9c9-e5c9-4e49-b0ff-b986c415eee8", "1299d9c9-e5c9-4e49-b0ff-b986c415eee8"]
]
我想应用User.find_by(id: XXXX).pluck(:longitude, :latitude,:city)
到每个user_id
子数组,以便为每个子数组创建另一个经度、纬度和城市数组。
请问有没有有效的方法呢?
解决方案
users = User.where(id: @host_and_guest.flatten)
.pluck(:id, :longitude, :latitude, :city)
.group_by(&:first) # creates hash with id as keys
@host_and_guest.map do |pair|
# replace pair with array of
# [[longitude, latitude, city], [longitude, latitude, city]]
pair.map { |id| users[id]&.drop(1) }
end
推荐阅读
- flutter - 颤动如何通过点击导航栏加载新屏幕
- fluentd - parse_audit_log 不适用于 td-agent
- php - Shopware - 在 orderRepository 中获取 documentCollection
- c++ - 为什么重载的“+=”和“<<”不能一起工作?
- r - 如何显示当前观察的百分比?
- ubuntu - 运行命令 sudo visudo ,现在我遇到了一些错误
- wso2 - 什么是 WSO2 oauth2 授权端点
- php - 为 Backpack 管理面板添加 SSO 登录
- azure - 是否可以为 ADLS GEN1 创建 SAS 令牌
- angular - 使用 ngSwitch 在 Angular 11 a href 中的组件之间切换?