Twitterでダイレクトメッセージできるすべての人のハッシュの配列を作成しようとしています。正しい配列は次のようになります[{id:12345,name:"john", profile_pic:"some_url"},{id:67890,name:"jim", profile_pic:"some_url"}]
all_followers と all_friends を取得して、2 つの内容を比較しています。返される各オブジェクトはハッシュの配列です。1 つの配列を反復処理して ID を取得し、次に 2 番目の配列を反復処理して、ハッシュにその ID 値が含まれているかどうかを確認しています。そうであれば、元のハッシュからいくつかの詳細を取得し、それを最終的に私のブラウザーに送信する小さなハッシュに送信します。
これを行うコードは次のとおりです。
def get_direct_message_list(friend_list,follower_list)
names_and_pics = []
friend_list.each do |base|
follower_list.each do |compare|
if compare.has_value?(base["id"])
block_hash = {}
block_hash["id"] = base["id"]
block_hash["name"] = base["name"]
block_hash["profile_background_image_url"] = base["profile_background_image_url"]
names_and_pics << block_hash
end
end
end
names_and_pics
end
それは本質的に機能しています。テスト スイートは次のようになり、テストは成功しています。
context "get_direct_message_list" do
it "should take friends and followers and return name, pic and twitter_id in one list" do
followers = [{"id"=>1, "name" => "john", "profile_background_image_url" => "http://somewhere.com"}, {"id"=>2},{"id"=>3, "name" => "mike", "profile_background_image_url" => "http://somewhere.com"}]
friends = [{"id"=>1, "name" => "john", "profile_background_image_url" => "http://somewhere.com"},{"id"=>5, "name"=>"someoneelse", "profile_background_image_url"=> "http://somewhere"},{"id"=>4},{"id"=>3, "name" => "mike", "profile_background_image_url" => "http://somewhere.com"}]
get_direct_message_list(friends, followers).should == [{"id"=>1, "name" => "john", "profile_background_image_url" => "http://somewhere.com"},{"id"=>3, "name" => "mike", "profile_background_image_url" => "http://somewhere.com"}]
end
end
私の問題は、返される配列に奇妙な重複があることです。具体的には、12 と 13 の Twitter ID、ビズ ストーンとジャック ドーシー、どちらも私をフォローしていません。それらはそれぞれ、最終的な配列で 3 回と 7 回複製されています。これをトラブルシューティングするために何を見ればよいのかよくわかりません。私の最初の考えは、 .has_value?`hashx.has_value?(13)
の twitter id が一致が正確であることを示している場合に true を返すようなものだということでした。134567' was being encountered but further experimentation with
私は何を見ることができますか?