Ruby Hash Whitelist Filter Ruby Hash Whitelist Filter ruby ruby

Ruby Hash Whitelist Filter


Rails' ActiveSupport library also gives you slice and except for dealing with the hash on a key level:

y = x.slice("one", "two") # => { "one" => "one", "two" => "two" }y = x.except("three")     # => { "one" => "one", "two" => "two" }x.slice!("one", "two")    # x is now { "one" => "one", "two" => "two" }

These are quite nice, and I use them all the time.


Maybe this it what you want.

wanted_keys = %w[one two]x = { "one" => "one", "two" => "two", "three" => "three"}x.select { |key,_| wanted_keys.include? key }

The Enumerable mixin which is included in e.g. Array and Hash provides a lot of useful methods like select/reject/each/etc.. I suggest that you take a look at the documentation for it with ri Enumerable.


You can just use the built in Hash function reject.

x = { "one" => "one", "two" => "two", "three" => "three"}y = x.reject {|key,value| key == "three" }y == { "one" => "one", "two" => "two"}

You can put whatever logic you want into the reject, and if the block returns true it will skip that key,value in the new hash.