我正在使用 ruby 1.8.7,我需要比较我拥有的两个哈希值,它们本质上是模型的属性。Hash A 比 Hash B 小,Hash B 具有 hash 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]
我觉得必须有更好的方法,我正在寻找比这更快、更优雅的方法。