Очень поздно, но желательно, чтобы в качестве ключа использовались символы:
my_hash = {}
my_hash[:my_key] = 'value'
my_hash.has_key?("my_key")
=> false
my_hash.has_key?("my_key".to_sym)
=> true
my_hash2 = {}
my_hash2['my_key'] = 'value'
my_hash2.has_key?("my_key")
=> true
my_hash2.has_key?("my_key".to_sym)
=> false
Но при создании хэша, если вы передаете строку как ключ, он будет искать строку в ключах.* Но при создании хеша вы передаете символ как ключ, затем has_key?будет искать ключи с помощью символа.
Если вы используете Rails, вы можете использовать Hash#with_indifferent_access
, чтобы избежать этого;hash[:my_key]
и hash["my_key"]
будут указывать на одну и ту же запись