aboutsummaryrefslogblamecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/hash/except.rb
blob: 6e397abf51eac9d2a6bccd4855e8be697249e764 (plain) (tree)
1
2
3
4
5
6
7
8
          



                                                               
   
                                                                                          
                                                    


                      
 
                                             


                                                
                    

                                   

     
class Hash
  # Returns a hash that includes everything but the given keys.
  #   hash = { a: true, b: false, c: nil}
  #   hash.except(:c) # => { a: true, b: false}
  #   hash # => { a: true, b: false, c: nil}
  #
  # This is useful for limiting a set of parameters to everything but a few known toggles:
  #   @person.update(params[:person].except(:admin))
  def except(*keys)
    dup.except!(*keys)
  end

  # Replaces the hash without the given keys.
  #   hash = { a: true, b: false, c: nil}
  #   hash.except!(:c) # => { a: true, b: false}
  #   hash # => { a: true, b: false }
  def except!(*keys)
    keys.each { |key| delete(key) }
    self
  end
end