ActiveSupport, входящий в состав Rails, поставляется с несколькими встроенными методами, которые могут помочь вам в достижении вашей цели.
Если вы просто хотите удалить несколько пар ключ-значение, вы можете использовать Hash # кроме!
number.except!(:a, :b, :c)
Если вы хотите сохранить оригинальный хеш, используйте Hash #, за исключением
new_hash = number.except!(:a, :b, :c)
new_hash # => {:d=>4}
number # => {:a=>1, :b=>2, :c=>3, :d=>4}
Вы также можете перейти с Rails-free:
new_hash = number.dup.tap do |hash|
%i[a b c].each {|key| hash.delete(key)}
end
new_hash # => {:d=>4}
number # => {:a=>1, :b=>2, :c=>3, :d=>4}
P.S .: последний пример кода очень медленный, я просто предоставляю его в качестве альтернативы.