Ruby on rails 比较hash和column-Rails

Ruby on rails 比较hash和column-Rails,ruby-on-rails,database,activerecord,hash,Ruby On Rails,Database,Activerecord,Hash,我从一个API调用中得到一个散列,该调用返回如下值: [{"name"=>"Abby Allen", "id"=>"123"}, {"name"=>"Barry Burner", "id"=>"234"}, {"name"=>"Cat Catrelli", "id"=>"345"}, {"name"=>"Darrell Dogooder", "id"=>"456"}, {"name"=>"Eva Ewing", "id"=>"567"}

我从一个API调用中得到一个散列,该调用返回如下值:

[{"name"=>"Abby Allen", "id"=>"123"}, {"name"=>"Barry Burner", "id"=>"234"}, {"name"=>"Cat Catrelli", "id"=>"345"}, {"name"=>"Darrell Dogooder", "id"=>"456"}, {"name"=>"Eva Ewing", "id"=>"567"}]
我想将这个散列中的id与我当前数据库(用户模型)中的“apid”列进行比较,并返回散列和“apid”列共有的所有id

i、 e.我的用户模型中的apid列如下所示

apiid
001
123
125
333
345
我试着这样做,但任何建议都无法使它起作用。最终,apid列会很长,所以我也在寻找最有效的方法

User.find_each(:select => "apiid") do |user|
  @friendscommon = @friends.select{|key, hash| hash["id"] == user }
end
其中@friends是上面的散列


如有任何建议,将不胜感激。谢谢大家!

要提取哈希数组中所有ID的数组:

apiids = hash.map { |user| user["id"] }
这将导致APID成为ID的数组,即:

apiids = ["123","234","345","456","567"]
并将其传递到查询中:

User.select(:apiid).where(:apiid => apiids)
在这里,where条款有效地看到:

where(:apiid => ["123","234","345","456","567"])
也就是说:

SELECT apiid FROM users WHERE (users.apiid IN ("123","234","345","456","567"))