-1

我有一条记录,我想将它插入到数组中,然后再访问它。

users = User.all

results = []

users.each do |user|
  results << {:name => user.name, :email => user.email}
end

结果变量仍然是一个数组吗?如果是,我怎样才能得到所有的名字和电子邮件?

4

4 回答 4

1

是的,它仍然是一个数组。您可以稍后拥有您想要的东西,例如:

results.each do |result|
  result[:name] # access to name
  result[:email] # access to email
end
于 2013-06-24T08:03:27.990 回答
1

您的示例将创建一个数组results,其中填充了包含每个用户名和电子邮件的哈希值。

您可以通过多种方式访问​​它,其中最简单的是一个简单的循环:

results.each do |result|
  name = result[:name]
  email = result[:email]
end

您还可以像这样直接访问单个项目:

first_result_name = results[0][:name]

但要小心尝试访问可能不存在的结果。

但我不得不问,你为什么要这样做?将所有Users 名称和电子邮件分配给一个数组没有任何好处,User.all 在功能上并没有什么不同。

于 2013-06-24T08:04:35.887 回答
0

你只需要一条线就可以了

results = users.collect{|user| {:name => user.name, :email => user.email}}
于 2013-06-24T08:08:49.097 回答
0

以一种不相关的方式,您的初始代码可以重写为:

results = User.all.inject([]) do |array, user|
  array << {:name => user.name, :email => user.email}
end

鉴于“结果”现在包含这个哈希集合,如果你想打印每个用户名和电子邮件,你会这样做:

results.each do |user|
  puts "#{user[:name]} #{user[:email]}"
end
于 2013-06-24T08:15:09.710 回答