我有一条记录,我希望将其插入到数组中,然后再访问它。
users = User.all
results = []
users.each do |user|
results << {:name => user.name, :email => user.email}
end
结果变量仍然是一个数组?如果是,我如何获得所有姓名以及电子邮件?
答案 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