Compare hashes and report where the change was

12 views
Skip to first unread message

Abdel Latif

unread,
Apr 9, 2018, 11:05:08 AM4/9/18
to Ruby on Rails: Talk

Hi,


I would like to compare two hashes, for example:

array1 = [{'id' => 124, 'name' => 'Kamal', 'job' => 'manager'},
{'id' => 314, 'name' => 'John', 'job' => 'developer'}]
array2 = [{'id' => 124, 'name' => 'Kamal', 'job' => 'managerZ'},
{'id' => 314, 'name' => 'JohnDD', 'job' => 'developer'}]


the id is not always 'id' , it could be UserID or EmployeeID or else

I want to have :

def compare_rows(array1,array2,id)

...

end



I want to report:

  • row with UserID equal 124, job changed from 'manager' to 'managerZ'
  • row with UserID equal 314, name changed from 'John' to 'JohnDD'
Thanks.

kaine wright

unread,
Apr 11, 2018, 4:53:47 AM4/11/18
to Ruby on Rails: Talk

If you want to get what is the difference between two hashes, you can do this:


result = {} hash1.each {|key, value| result[key] = hash2[key] if hash2[key] != value } puts result

or use a this hash1.to_a == hash2.to_a turning it to an array and compairing those. or you could use to_s compare strings.
Reply all
Reply to author
Forward
0 new messages