我有一个包含用户ID的数组:
UserID = [
1
2
3
4
5
3
2
2
3]
我有一个将用户ID映射到用户电子邮件的表。我正在尝试将ID与电子邮件匹配但保留重复项,因此我最终得到:
[
1@me.com
2@me.com
3@me.com
4@me.com
5@me.com
3@me.com
2@me.com
2@me.com
3@me.com]
当我尝试采集或映射时:
UserInfo.where(:id => UserID).pluck(:email)
我最终得到了:
[
1@me.com
2@me.com
3@me.com
4@me.com
5@me.com]
我怎样才能得到我正在寻找的桌子?
答案 0 :(得分:0)
你必须循环
ids.map{|id| UserInfo.find(id: id).email }
但是你有大量的id,你可能想要通过首先加载你需要的记录来优化它
email_hash = UserInfo.where(id: ids).inject({}) {|h, v| h[v.id] = v.email; h;}
result = ids.map{|id| email_hash[id]}