Руби: Как я могу сделать эти объекты одинаковыми? - PullRequest
0 голосов
/ 19 марта 2010

Итак, у меня есть следующие хэши / массивы:

{"number"=>[{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}, {"tracking"=>"9102901001301227214058"}]}

{"number"=>{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}}

Этот первый хеш имеет массив для number, а второй - нет.

Это порождает хаос, пытаясь перебрать данные (особенно, когда есть только одна комбинация отслеживания / заметок).

В конечном итоге я хочу иметь возможность сделать цикл each для каждой комбинации отслеживания / заметок.

Ответы [ 2 ]

2 голосов
/ 19 марта 2010
h1={"number"=>[{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}, {"tracking"=>"9102901001301227214058"}]}
h2={"number"=>{"tracking"=>"1Z81E74W0393736553", "notes"=>"Example note"}}
[h1["number"]].flatten
  => [{"notes"=>"Example note", "tracking"=>"1Z81E74W0393736553"}, {"tracking"=>"9102901001301227214058"}]
[h2["number"]].flatten
  => [{"notes"=>"Example note", "tracking"=>"1Z81E74W0393736553"}]

Теперь каждый из них будет массивом хэшей, и вы можете использовать each для их итерации.

1 голос
/ 19 марта 2010

Как то так?

hash["number"] = [ hash["number"] ] unless hash["number"].kind_of?(Array)
...