v2.2.1 - Show latest stable - 1 note

Slice a hash to include only the given keys. This is useful for limiting an options hash to valid keys before passing to a method:

  def search(criteria = {})
    assert_valid_keys(:mass, :velocity, :time)

  search(options.slice(:mass, :velocity, :time))

If you have an array of keys you want to limit to, you should splat them:

  valid_keys = [:mass, :velocity, :time]
Show files where this module is defined (1 file)
Register or log in to add new notes.
November 3, 2015 - (v4.2.1)
0 thanks

Possible bug

Works as expected for non bang methods

>  a={x:1, y:2, z:3}                                                                      
=> {:x=>1, :y=>2, :z=>3}

> a.slice(:y)                                                                             
=> {:y=>2}

> a.except(:y)                                                                            
=> {:x=>1, :z=>3}

Bug on slice! it behaves like except!

> a.clone.slice!(:y)                                                                                                                                                                                
=> {:x=>1, :z=>3}

> a.clone.except!(:y)                                                                                                                                                                               
=> {:x=>1, :z=>3}

slice! should return {:y=>2} and modify a to no longer have it