2013-12-19 3 views
1

이메일 제공 업체의 API에서 구독자 정보를 검색하고 있습니다. 페이지 당 25 명의 가입자 해시를 반환합니다. 각 페이지의 결과를 하나의 해시 (@members_subs_all)로 병합하고 싶습니다. 그러나 내 메서드 반환합니다 @ memers_subs 제대로 @members_subs_all 모든 데이터가 포함되어 있지 않습니다.Ruby에서 API의 해시 결과를 병합하는 방법은 무엇인가요?

올바른 접근 방식을 취합하고 있습니까? 그렇다면 제대로 작동하기 위해 무엇을 놓치고 있습니까? 그렇지 않다면 어떻게해야합니까?

def retrieve_members_info 
    @members_subs_all = {} 
    pages =* (0..1000) 
    pages.each do |i| 
    @members_subs = # API returns hash of 25 subscribers per page 
     @members_subs_all.merge(@members_subs) 
     break if @members_subs["data"].empty? 
    end 
    puts "members_subs_all #{@members_subs_all["data"]}" 
end 

답변

1

당신은 merge!보다는 merge합니다. merge은 병합 된 해시의 값을 반환하지만 호출 된 해시는 변경하지 않습니다. merge!은 병합 된 해시 값을 반환합니다. 은 해당 값에 대해 호출 된 해시를 업데이트합니다.

각각의 문서를 비교 :

(또한 method 있는지 여부를 발신자의 사실을 기반으로 truthy 값을 반환 술어이다 method?를 참조하십시오.) 그것을위한

+0

감사합니다. 나는 또한 합병을 움직일 필요가 있었다! break 후의 실행 문. – analyticsPierce

+0

아 ... 훨씬 좋습니다. 고맙습니다. – analyticsPierce

+0

우리 [대화에서이 토론 계속] (http://chat.stackoverflow.com/rooms/43615/discussion-between-analyticspierce-and-telemachus) – analyticsPierce

0
def merge_hashs(a,b) 
    a.merge(b) {|key, a_v, b_v| merge_hashs(a_v, b_v) } 
end 
관련 문제