Получить хеш-ключ и преобразовать в строковый рубин

Пример Hash

hash = {:key => ["val1", "val2]}

Когда я сделал это на рейках 3.0.7, все было в порядке.

> hash.keys.to_s
 => "key"
> hash[hash.keys.to_s]
 => ["val1", "val2"]

Но если я делаю это с помощью рельсов 3.1.3, это не так.

> hash.keys.to_s
 => [\"key\"]
> hash[hash.keys.to_s]
 => nil

Является ли это из-за изменения версии Rails? и Есть ли другой способ превратить хеш-ключ в строку, которая работает с обеих версий (или с рельсами 2 тоже)?

Ответ 1

Вы обновили Ruby, а также Rails? Я думаю, что это изменение между 1,8 и 1,9

Попробуйте hash.keys.first.to_s (если всегда есть только одна клавиша) или hash.keys.join

Ответ 2

Вам просто нужно преобразовать его в символ вместо правильной строки:

hash[hash.keys.to_sym]