在哈希中查找丢失的键

Find missing key in hash

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

例如

 {"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"}

缺少的键可以是发件人、主题、收件人、正文,但不能是抄送和密件抄送。因此,我需要找出散列中缺少哪些键,以便 return 向用户提供特定键。我无法在模型级别执行此操作 此 link 中提供的 This solution 没有帮助,因为它只是 return 告诉我是真是假。取而代之的是,我需要散列中不存在的缺失键

您可以使用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"]