Вы можете использовать split
, как вы показали, для преобразования ключей в массив строк, затем map
строк в символы и, наконец, dig
ha sh при извлечении элементов массива в качестве аргументов с оператор splat *
:
response.dig(*"data.target_file".split(".").map(&:to_sym))
Если вы видите, что повторяете этот код, вы можете расширить класс Hash
и добавить метод, который это делает:
class Hash
def dot(path)
self.dig(*path.split(".").map(&:to_sym))
end
end
Затем вы просто использовал бы:
response.dot("data.target_file")