Ruby on rails Ruby哈希删除\u(如果有多个)

Ruby on rails Ruby哈希删除\u(如果有多个),ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我只列出了3个ors,但我有一个7个ors的列表,这一行变得又长又难看。有没有一种方法可以在不必每次都执行key==SOMEVALUE的情况下以更短的方式执行此操作 试试看: Some_hash.delete_if {|key, value| key == "at" || key == "with" || key == "from"} 尝试: Rails附带了方便的扩展: 返回一个散列,该散列包含除给定键以外的所有内容 Rails附带了方便的扩展: 返回一个散列,该散列包含除给定键以外的所有内

我只列出了3个ors,但我有一个7个ors的列表,这一行变得又长又难看。有没有一种方法可以在不必每次都执行
key==SOMEVALUE
的情况下以更短的方式执行此操作

试试看:

Some_hash.delete_if {|key, value| key == "at" || key == "with" || key == "from"}
尝试:

Rails附带了方便的扩展:

返回一个散列,该散列包含除给定键以外的所有内容

Rails附带了方便的扩展:

返回一个散列,该散列包含除给定键以外的所有内容


这个答案没有使用Rails中包含的handy-Exception方法。@Iceman很好。我已经投票决定重新打开。这个答案并没有使用Rails中包含的handy-Exception方法。@Iceman很好。我投票赞成重新打开。请注意,
#except
返回一个删除键的重复哈希,请参阅
#except
用于就地变异器。请注意,
#Exception
返回一个删除键的重复哈希,请参阅
#Exception用于就地突变。尽管@iceman的答案是最好的,但最终还是这样做了!尽管@iceman的答案是最好的,但最终还是选择了这个!
%w[at with from]
.each_with_object(Some_hash){|k, h| h.delete(k)}
keys_to_remove = ['at', 'with', 'from']
hash.delete_if {|key,_| keys_to_remove.include? key}
SomeHash.except(:key1, :key2, ...)