У меня есть два хеша, содержащих несколько хешей (информация о продукте).Как сравнить два хэша, содержащие ~ 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 изменений.
Что такое лучший способ сравнить два хэша?
Edit:
Я просто хотел бы знать, если продукт был добавлен, удален или отредактирован. Если бы это было так, достаточно простого true
.
Этот драгоценный камень не будет знать, какие внутренние хэши следует сравнивать, поэтому все кажется отличным в выходе, который вы получаете. – squiguy
Почему, по вашему мнению, не может быть «64378»? Один новый элемент верхнего уровня будет создавать патчи 'N', где' N' - количество подключей. Взгляните на документацию внимательно. – mudasobwa
Это, вероятно, должно быть сделано с использованием базы данных. Они действительно хороши в этой проблеме. –