여러 개의 해시 (제품 정보)가 포함 된 두 개의 해시가 있습니다.~ 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
왜 '64378' 차이가 나올 수 없다고 생각합니까? 하나의 새로운 최상위 요소는 'N'패치를 생성합니다. 여기서 'N'은 하위 키의 양입니다. 문서를 자세히 살펴보십시오. – mudasobwa
이것은 아마도 데이터베이스를 사용하여 수행해야합니다. 그들은 이런 종류의 문제에 정말로 능숙합니다. –