Преобразуйте ключ из строки в символ и выполните поиск в хэше.
hash = {:key1 => "value1", :key2 => "value2"}
k = 'key1'
hash[k.to_sym] # or iow, hash[:key1], which will return "value1"
Rails использует этот класс с именем HashWithIndifferentAccess
, который оказывается очень полезнымв таких случаях.Я знаю, что вы пометили свой вопрос только с помощью Ruby, но вы могли бы украсть реализацию этого класса из исходного кода Rails, чтобы избежать преобразования строки в символ и преобразования символов в строку по всей вашей кодовой базе.Это делает значение доступным, используя символ или строку в качестве ключа.
hash = HashWithIndifferentAccess.new({:key1 => "value1", :key2 => "value2"})
hash[:key1] # "value1"
hash['key1'] # "value1"