文字列をハッシュ内のシンボルに変換する最良の方法
概要
Ruby でハッシュ内のすべてのキーを文字列からシンボルに変換する (最も速く、最もクリーンで、簡単な) 方法は何ですか?
これは YAML を解析するときに便利です。
my_hash = YAML.load_file('yml')
使用できるようにしたいのですが:
my_hash[:key]
それよりも:
my_hash['key']
解決策
Ruby >= 2.5 (ドキュメント) では、以下を使用できます。
my_hash.transform_keys(&:to_sym)
古い Ruby バージョンを使用していますか?以下は、シンボル化されたキーを使用してハッシュを新しいハッシュにコピーするワンライナーです。
my_hash = my_hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
Rails では以下を使用できます。
my_hash.symbolize_keys
my_hash.deep_symbolize_keys