This blog is part of our Ruby 2.5 series.

Ruby 2.4

Let’s say we have a hash { id: 1, name: 'Ruby 2.5', description: 'BigBinary Blog' } and we want to select key value pairs having the keys name and description .

We can use the Hash#select method.

irb > blog = { id: 1 , name: 'Ruby 2.5' , description: 'BigBinary Blog' } => { :id => 1 , :name => "Ruby 2.5" , :description => "BigBinary Blog" } irb > blog . select { | key , value | [ :name , :description ]. include? ( key ) } => { :name => "Ruby 2.5" , :description => "BigBinary Blog" }

Matzbara Masanao proposed a simple method to take care of this problem.

Some of the names proposed were choice and pick .

Matz suggested the name slice since this method is ActiveSupport compatible.

Ruby 2.5.0

irb > blog = { id: 1 , name: 'Ruby 2.5' , description: 'BigBinary Blog' } => { :id => 1 , :name => "Ruby 2.5" , :description => "BigBinary Blog" } irb > blog . slice ( :name , :description ) => { :name => "Ruby 2.5" , :description => "BigBinary Blog" }

So, now we can use a simple method slice to select key value pairs from a hash with specified keys.

Here is the relevant commit and discussion.