插入阵列导轨3

时间:2013-06-24 07:59:48

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

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

users = User.all

results = []

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

结果变量仍然是一个数组?如果是,我如何获得所有姓名以及电子邮件?

4 个答案:

答案 0 :(得分:1)

是的,它仍然是一个数组。您可以稍后获得所需内容,例如:

results.each do |result|
  result[:name] # access to name
  result[:email] # access to email
end

答案 1 :(得分:1)

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

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

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

您也可以直接访问单个项目:

first_result_name = results[0][:name]

但请注意尝试访问可能不存在的结果。

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

答案 2 :(得分:0)

你只需要一行就可以了

results = users.collect{|user| {:name => user.name, :email => user.email}}

答案 3 :(得分: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