2013-06-24 51 views
-1

我有一条记录,我想插入它和数组,然后访问它。插入到一个数组轨道3

users = User.all 

results = [] 

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

是结果变量还是数组?如果是的话,我怎样才能把所有的名字与电子邮件一起?

回答

1

你的榜样将创建充满包含每个用户的姓名和电子邮件哈希值的数组results

你可以访问它在几个方面,其中最简单的是一个简单的循环:

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

您也可以访问不同的物品,直接像这样:

first_result_name = results[0][:name] 

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

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

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

鉴于“成果”现在包含这个集合:

+0

我如何可以访问所有的结果,我只是想做结果 –

+0

那么你想要什么样的形式? –

+2

解释你想对结果做什么,我们可以给出更有针对性的答案。 – Matt

1

是的,它仍然是一个数组。你可以有你以后想要什么,例如有:

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

你只需要一条线做

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

谢谢,会用它 –

0

在一种不相关的方式,为您最初的代码可以改写哈希值,如果你想打印每一个用户名和电子邮件,你会怎么做:

results.each do |user| 
    puts "#{user[:name]} #{user[:email]}" 
end