我有两个哈希包含多个哈希(产品信息)。如何比较两个包含〜25000个哈希的哈希?
我想要做的是比较两个哈希值,看看有什么产品被添加,删除,更新(例如价格,描述,图片)。
old_hash.size
# => 24595
new_hash.size
# => 26153
下面是两个散列的结构是这样的:
{"wi230075"=>
{"itemId"=>"wi230075",
"description"=>"AH Verse frietaardappelen",
"salesUnitSize"=>"2,5 kg",
"images"=>[...]
"fromPrice"=>2.19,
"basePrice"=>{"price"=>2.19, "unitPriceDescription"=>"0.96/KG"},
"score"=>0,
"frozen"=>false,
"isPBO"=>false,
"outOfStock"=>false,
"quantity"=>0,
"extendedAttributes"=>[],
"sourceId"=>{"source"=>"wi", "id"=>230075, "asString"=>"wi230075"},
"hqIdSource"=>"AH_HQ",
"hqId"=>822729,
"productId"=>230075,
"links"=>[],
"category"=>"/Aardappel, groente, fruit/Aardappelen/Hele aardappel/",
"brand"=>"AH"},
{...}
}
我试着比较使用HashDiff gem两个散列。这里是我得到的:
diff = HashDiff.diff(old_hash, new_hash)
diff.size
# => 64378
东西似乎出错了,不能有64378变化。
什么是比较两个哈希的更好方法?
编辑:
我只是想知道,如果得到了增加了一个产品,删除或编辑。如果是这样,一个简单的true
就足够了。
那宝石不会知道要比较哪些内部哈希值,这就是为什么一切看起来都不一样的原因。 – squiguy 2014-10-06 17:07:35
你为什么认为不能有'64378'差异?一个新的顶级元素将产生'N'个补丁,其中'N'是一些子密钥。仔细查看文档。 – mudasobwa 2014-10-06 17:10:32
这可能应该使用数据库来完成。他们非常擅长这类问题。 – 2014-10-06 17:12:17