Module: ActiveSupport::CoreExtensions::Hash::Except

Included in:
Hash
Defined in:
lib/active_support/core_ext/hash/except.rb

Overview

Return a hash that includes everything but the given keys. This is useful for limiting a set of parameters to everything but a few known toggles:

@person.update_attributes(params[:person].except(:admin))

Instance Method Summary collapse

Instance Method Details

#except(*keys) ⇒ Object

Returns a new hash without the given keys.


12
13
14
# File 'lib/active_support/core_ext/hash/except.rb', line 12

def except(*keys)
  dup.except!(*keys)
end

#except!(*keys) ⇒ Object

Replaces the hash without the given keys.


17
18
19
20
21
# File 'lib/active_support/core_ext/hash/except.rb', line 17

def except!(*keys)
  keys.map! { |key| convert_key(key) } if respond_to?(:convert_key)
  keys.each { |key| delete(key) }
  self
end