首页 > 解决方案 > 如何对数组和表执行内连接

问题描述

我有一个哈希数组,它存储来自 api 的数据。我怎样才能inner join用桌子在它上面表演。

> posts
[{ uuid: 'post1', user_uuid: 'user1' },
 { uuid: 'post2', user_uuid: 'user2' }]

> User.all
#<ActiveRecord::Relation [#<User id: 1, uuid: "user1", name: "User1">]>

我希望得到一个像

[{ uuid: 'post1', user_uuid: 'user1', user_name: 'User1' }]

user2表中不存在,因此不会出现在结果数组中。

标签: ruby-on-rails

解决方案


这是您上面的代码示例而不是内部连接,因为另一个表(帖子)不是数据库中的关系表

arr1 = Array.new
users = User.all
users.each do |user|
 post = posts.detect { |d| d[:user_uuid] == user.uuid }
 # detect will check if here is matching between user and posts content
 arr1 << {uuid: post[:uuid], user_uuid: post[:user_uuid], user_name: user.name} if post.present?
end
puts arr1

推荐阅读