Ruby on rails 密钥相同时如何追加哈希值

Ruby on rails 密钥相同时如何追加哈希值,ruby-on-rails,ruby,ruby-on-rails-4,haml,Ruby On Rails,Ruby,Ruby On Rails 4,Haml,以下是会员和会员的电子邮件详细信息: - @members.each do |member| - member.member_emails.each do |member_email| - email_hash = { member.id.to_s => { member_email.kind => member_email.email } } 当已经存在密钥时,如何追加哈希? 获取电子邮件\u散列的结果是: {"6"=>{"personal"=&g

以下是会员和会员的电子邮件详细信息:

- @members.each do |member|
    - member.member_emails.each do |member_email|
        - email_hash = { member.id.to_s => { member_email.kind => member_email.email } }
当已经存在密钥时,如何追加哈希? 获取电子邮件\u散列的结果是:

 {"6"=>{"personal"=>"abc@gmail.com"}}
 {"4"=>{"work"=>"def@yahoo.com"}}
 {"4"=>{"personal"=>"xyz@gmail.com"}}
预期结果是:

 {"6"=>{"personal"=>"abc@gmail.com"}}
 {"4"=>{"work"=>"def@yahoo.com", "personal"=>"xyz@gmail.com"}}
非常感谢您的帮助。谢谢大家!

试试:

假设值是散列

def add_or_append(hash, key, value)
   if hash[key]
    hash[key].merge(value)
   else
    hash[key] = value
   end
end
如果值是字符串:

def add_or_append(hash, key, value)
   if hash[key]
    hash[key] << ", #{value}"
   else
    hash[key] = value
   end
end
def add_或_append(散列、键、值)
如果哈希[键]

hash[key]我不完全确定您想做什么(不知道上下文),但现在,您正在通过
成员电子邮件
循环,并为每封电子邮件创建一个新的hash。假设您只想为每个用户创建一个哈希,您可以执行以下操作:

- @members.each do |member|
    - email_hash = {}
    - member.member_emails.each do |member_email|
        - email_hash[member_email.kind] = member_email.email
    - user_hash = { member.id.to_s => email_hash }

您的哈希示例无效。