我怎么能用ruby数组做这样的事情

时间:2016-10-18 11:03:03

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4

我有一个像这样的用户数组:

users_array = [[1,text for 1],[2,text for 2],[3,text for 3],[4,text for 4],[5,text for 5]]

这里第一个元素是user_id,第二个元素是特定于同一个数组中user_id的文本。

现在我正在尝试从这些数组中使用用户对象而不是ids。

users_array = [[#<User id: 1, encrypted_email: "">,text for 1],[#<User id: 2, encrypted_email: "">,text for 2],[#<User id: 3, encrypted_email: "">,text for 3],[#<User id: 4, encrypted_email: "">,text for 4],[#<User id: 5, encrypted_email: "">,text for 5]]

我正在尝试不循环数组并为数千名用户点击数千次。

2 个答案:

答案 0 :(得分:4)

data = users_array.to_h
# find all users with single query and build your map
User.where(id: data.keys).map { |user| [user, data[user.id]] }

答案 1 :(得分:1)

您可以使用transpose来提取ID和值,并使用zip来合并用户和值:

ids, values = users_array.transpose
users_array = User.find(ids).zip(values)