paint-brush
Extracting Information From Hash in Ruby on Railsby@coolprobn
267 reads

Extracting Information From Hash in Ruby on Rails

by Prabin PoudelJune 18th, 2020
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

Ruby on Ruby on Rails shows how to extract keys and values from hash. It is possible to extract key and values separately for insert and update operations. Do you know more elegant or alternative way of extracting keys from hash? Please enlighten and guide us with your precious comment below if you do.Previously published at https://thedevpost.com/blog/extract-key-or-value-from-hash-in-ror/// previously published at the same site.
featured image - Extracting Information From Hash in Ruby on Rails
Prabin Poudel HackerNoon profile picture

When I was recently working in one of the client project, I had to communicate with external mariadb server to store records from react/rails app, that means I would get activerecord hash from our app which I had to convert to pure sql query and send it to external server for storing.

If you have worked with sql queries previously then you must know that keys and values must be separated for insert operations like

sql
INSERT INTO users (first_name, last_name, email) VALUES (John, Doe, [email protected])

I could convert attributes to hash easily using as_json to get the format

{"first_name"=>"John", "last_name"=>"Doe", "email"=>"[email protected]"}
.

{"first_name"=>"John", "last_name"=>"Doe", "email"=>"[email protected]"}

But I had to extract keys and values separately so that attributes can be accurately formatted and ready for insert and update operations. Let me show you how I extracted keys and values from the hash and formatted them as required for the operations.

Let's assume we have:

user = {"first_name"=>"John", "last_name"=>"Doe", "email"=>"[email protected]"}

Extract single key or value

If we only want email

rails-console
// For key
user.extract!("email").keys # ["email"]

// For value
# with extract
user.extract!("email").values # ["[email protected]"]

# simply
user['email'] # "[email protected]"

Extract multiple keys or values

If we want first_name and last_name but not email

rails-console
// For keys
user.extract!(*["first_name", "last_name"]).keys # ["first_name", "last_name"]

// For values
user.extract!(*["first_name", "last_name"]).values # ["John", "Doe"]

Extract all keys or values

rails-console
// For keys
user.keys # ["first_name", "last_name", "email"]

// For values
user.values # ["John", "Doe", "[email protected]"]

Do you know more elegant or alternative way to extract keys and values from hashes? Please enlighten and guide us with your precious comment below if you do.

Previously published at https://thedevpost.com/blog/extract-key-or-value-from-hash-in-ror/