2013-06-24 94 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