You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails 表列对比:匹配path与id字段提取对应name存入数组

Ruby on Rails 双表匹配提取name字段方案

假设存path列的表对应Model为PathTable,存id、name列的表对应Model为UserTable,你可以替换为实际业务中的Model名。

方案1:数据库层面关联查询(推荐,性能更高)

直接在数据库完成匹配逻辑,避免加载冗余数据到内存,适合数据量较大的场景:

# 关联查询匹配成功的name,直接返回数组
result = UserTable.joins("INNER JOIN path_tables ON user_tables.id = path_tables.path").pluck(:name)
  • 示例场景下执行后返回值为["Jim"],完全符合需求。

方案2:已有预加载数据时用Ruby处理

如果其他逻辑已经加载过两张表的相关数据,可以用以下写法避免重复查库:

# 提取所有path值
path_values = PathTable.pluck(:path)
# 匹配id对应的name
result = UserTable.where(id: path_values).pluck(:name)

特殊场景适配

如果path列存在重复值,需要name按path出现的重复次数同步存入数组,可以用以下写法:

path_values = PathTable.pluck(:path)
# 先构建id到name的映射哈希,减少遍历开销
id_to_name = UserTable.where(id: path_values).pluck(:id, :name).to_h
# 按path的顺序和重复度生成结果数组
result = path_values.filter_map { |path| id_to_name[path] }

内容的提问来源于stack exchange,提问作者Emily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:27:01