Ruby, как проверить значения во вложенном хэше? - PullRequest
1 голос
/ 17 октября 2019

У меня есть такой вложенный хэш, где он может иметь 50 значений:

{
 "pool1"=>{"name"=>"my-pool", "partition"=>"Common"},
 "pool2"=>{"name"=>"test-2", "partition"=>"baas"}
}

Я пытаюсь получить все пулы с ключом "partition"=>"baas". вот так:

 {"pool7"=>{"name"=>"test-7", "partition"=>"baas"}
 {"pool12"=>{"name"=>"test-12", "partition"=>"baas"}
 {"pool18"=>{"name"=>"test-18", "partition"=>"baas"}}

Вот как я пытаюсь это сделать.

def test(partition_name,hash)
        a = 1
        b = partition_name
        c = {}
        d = 1

        partition_hash.each do |i|

           f = i.fetch(":pool#{a}",{}.fetch(:partition, false))

            if f = b
                c["pool#{d + 1}"] = i
                d = d +1
            end
            a = a +1
        end
end

Теперь я получаю ошибку, подобную этой:

[no implicit conversion of String into Integer]

Как я могу решить это?

1 Ответ

2 голосов
/ 17 октября 2019

Вам нужно просто select для этого:

p hash.select { |_, value| value['partition'] == 'baas' }
...