У меня есть хеш:
a = {b: {c: {d: e}}}
Как сохранить d из a? Должен ли я написать так:
x = [:b][:c]
a(x) = "foo"
a
выход {b:{c:"foo"}}
Вы ищете Hash#dig и a.dig(:b, :c) или a.dig(*[:b, :c])?
Замечу, что dig от Ruby 2.3. Так что, если вы используете любую версию ниже 2.3, это не сработает.

Как отмечает mu в комментариях, вы, вероятно, захотите использовать dig:
a = {b: {c: {d: :e}}}
keys = [:b, :c]
d_and_e = a.dig(*keys)
Это вернет {d: :e}.
a[:b][:c].keys.first # => :d
a[:b][:c].keys.first.to_s # => "d"
hash.keys.join или hash.keys (если ключ только один)
Я понятия не имею, что это пытается сказать
вы хотите получить ключи от любого хэша, если да, то вы можете просто сделать
keys = a[:b][:c].keys, если нет, вам нужно более четко сформулировать свой вопрос о том, что именно вы ищете