Я использую ruby 1.8.7, и мне нужно сравнить два имеющихся у меня хэша, которые по сути являются атрибутами модели.Хэш A меньше, чем Hash B, а Hash B имеет все атрибуты хэша A, а также некоторые дополнительные атрибуты, которые меня не интересуют.Моя главная цель - увидеть, совпадают ли элементы A с соответствующими элементами B. Так, например,
@hash_a = {:cat => 'Bubby', :dog => 'Gizmo'}
@hash_b = {:cat => 'Bubby', :dog => 'Gizmo', :lion => 'Simba'}
@hash_a == @hash_b
#=> true
Теперь все немного сложнее, потому что поля не совпадаютполностью, даже если они ссылаются на одну и ту же информацию
@hash_a = {:cats_name => 'Bubby', :dog => 'Gizmo'}
@hash_b = {:cat => 'Bubby', :dog => 'Gizmo', :lion => 'Simba'}
@hash_a == @hash_b
#=> true
Я работаю над процессом, который сравнивает два совпадающих элемента, обновляет его, если поля изменились, и только если они изменились.Или создает новый элемент, если он не может найти соответствующий элемент.Изменение имен самого хэша не вариант.Сейчас я просто сравниваю каждое поле в частном методе, чтобы увидеть, равны ли они.
return hash_a[:cat] == hash_b[:cats_name] && hash_a[:dog] == hash_b[:dog]
Мне кажется, что должен быть лучший способ, я ищу что-то более быстрое и элегантное, чемэто.