我有一条记录,我想插入它和数组,然后访问它。插入到一个数组轨道3
users = User.all
results = []
users.each do |user|
results << {:name => user.name, :email => user.email}
end
是结果变量还是数组?如果是的话,我怎样才能把所有的名字与电子邮件一起?
我有一条记录,我想插入它和数组,然后访问它。插入到一个数组轨道3
users = User.all
results = []
users.each do |user|
results << {:name => user.name, :email => user.email}
end
是结果变量还是数组?如果是的话,我怎样才能把所有的名字与电子邮件一起?
你的榜样将创建充满包含每个用户的姓名和电子邮件哈希值的数组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
鉴于“成果”现在包含这个集合:
是的,它仍然是一个数组。你可以有你以后想要什么,例如有:
results.each do |result|
result[:name] # access to name
result[:email] # access to email
end
你只需要一条线做
results = users.collect{|user| {:name => user.name, :email => user.email}}
谢谢,会用它 –
在一种不相关的方式,为您最初的代码可以改写哈希值,如果你想打印每一个用户名和电子邮件,你会怎么做:
results.each do |user|
puts "#{user[:name]} #{user[:email]}"
end
我如何可以访问所有的结果,我只是想做结果 –
那么你想要什么样的形式? –
解释你想对结果做什么,我们可以给出更有针对性的答案。 – Matt