method 
 slice
  v5.2.3 - Show latest stable - 2 notes - Class: Hash   
 - 1.0.0
 - 1.1.6
 - 1.2.6
 - 2.0.3
 - 2.1.0
 - 2.2.1
 - 2.3.8
 - 3.0.0 (0)
 - 3.0.9 (-2)
 - 3.1.0 (0)
 - 3.2.1 (0)
 - 3.2.8 (0)
 - 3.2.13 (0)
 - 4.0.2 (1)
 - 4.1.8 (0)
 - 4.2.1 (8)
 - 4.2.7 (0)
 - 4.2.9 (0)
 - 5.0.0.1 (0)
 - 5.1.7 (0)
 - 5.2.3 (0)
 - 6.0.0
 - 6.1.3.1
 - 6.1.7.7
 - 7.0.0
 - 7.1.3.2
 - 7.1.3.4
 - What's this?
 
slice(*keys) public Slices a hash to include only the given keys. Returns a hash containing the given keys.
{ a: 1, b: 2, c: 3, d: 4 }.slice(:a, :b) # => {:a=>1, :b=>2}
This is useful for limiting an options hash to valid keys before passing to a method:
def search(criteria = {}) criteria.assert_valid_keys(:mass, :velocity, :time) end 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] search(options.slice(*valid_keys))
  Register or log in to add new notes.    
 evilguc -  August 20, 2013         
 Olefine -  August 12, 2013     
   2 thanks 
 everything is ok
Olefine, I’m not sure here is a good place for such questions (better use stackoverflow for example), but answer for your question is that Rails provide slice (and many other methods) not only for Hash class but for HashWithIndifferentAccess too such as for any other superclass of Hash, so they use
hash = self.class.new
for a reason. {} is a literal only for Hash.
  0 thanks 
 
 
 
 
 
 