如何将哈希添加到数组?

时间:2014-03-03 12:36:12

标签: ruby-on-rails ruby

我与2名员工开展业务。每个员工都有很多信息。

当我运行命令时:

business.employees.each do |employee|
 puts employee.messages.group_by &:from
end

我得到了正确的输出:

{100=>[#<Message id: 3, content: "Needs more training", from: 100, employee_id: 1>]}

{101=>[#<Message id: 2, content: "Very lazy.", from: 101, employee_id: 2>], 102=>[#<Message id: 1, content: "Fantastic.", created_at: "2014-03-03 12:01:28", updated_at: "2014-03-03 12:01:28", from: 102, employee_id: 2>]}

但我不想把我想要的每个哈希值添加到数组中以便我可以显示它们。

所以当我运行命令

grouped_messages = []
business.employees.each do |employee|
 grouped_messages << employee.short_messages.group_by &:from
end

我收到错误:expecting keyword_end

3 个答案:

答案 0 :(得分:6)

你缺少括号,这应该有效:

grouped_messages = []
business.employees.each do |employee|
 grouped_messages << employee.short_messages.group_by(&:from)
end

更好的选择应该是使用map

grouped_messages = business.employees.map do |employee| 
  employee.short_messages.group_by &:from
end

答案 1 :(得分:3)

不要省略括号:

grouped_messages << employee.short_messages.group_by(&:from)

答案 2 :(得分:-1)

&:from周围缺少括号,导致错误。将其更改为(&:from)