在哈希中找到丢失的密钥

时间:2018-04-04 03:47:15

标签: ruby-on-rails ruby ruby-on-rails-4

我陷入了需要在散列中找到丢失键的情况。但问题是关键是不确定它可以是某些键的任何键。

例如

 {"from"=>"abc@gmail.com", "to"=>"def@gmail.com:ijk@gmail.com:lmn@gmail.com", "subject"=>"hi", "body"=>"there", "cc" => "def@gmail.com:ijk@gmail.com", "bcc" => "def@gmail.com:ijk@gmail.com"}

缺少的密钥可以来自,主体,主体,但不是cc和密送。因此,我需要找出散列中缺少哪些键,以便将特定键返回给用户。我不能在模型级别这样做 此链接中提供的This solution没有帮助,因为它只是返回我的真或假。而不是那样,我需要丢失的密钥,这些密钥在我的哈希

中不存在

1 个答案:

答案 0 :(得分:3)

您可以使用Hash#keys方法

REQUIRED_KEYS = %w(from subject to body)
hash = {
  "from"=>"abc@gmail.com", 
  "to"=>"def@gmail.com:ijk@gmail.com:lmn@gmail.com", 
  "subject"=>"hi", 
  "body"=>"there", 
  "cc" => "def@gmail.com:ijk@gmail.com", 
  "bcc" => "def@gmail.com:ijk@gmail.com"
}

REQUIRED_KEYS - hash.keys
#=> []

hash.delete('to')
#=> "def@gmail.com:ijk@gmail.com:lmn@gmail.com"

REQUIRED_KEYS - hash.keys
#=> ["to"]