Я использую ruby 1.8.7, и мне нужно сравнить два хэша, которые у меня есть, которые по сути являются атрибутами модели. Хэш A меньше, чем хэш B, а хэш 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]
Я чувствую, что должен быть лучший способ, я ищу что-то более быстрое и элегантное, чем это.