[ruby-on-rails] Comment vérifier si une clé spécifique est présente dans un hachage ou non?


1 Answers

Alors que Hash#has_key? fait le travail, comme Matz note here , il a été déprécié en faveur de la Hash#key? .

hash.key?(some_key)
Question

Je veux vérifier si la clé "user" est présente ou non dans le hash de la session. Comment puis-je faire ceci?

Notez que je ne veux pas vérifier si la valeur de la clé est nulle ou non. Je veux juste vérifier si la clé "utilisateur" est présente.




Il est très tard mais de préférence les symboles doivent être utilisés comme clé:

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 

Mais lors de la création d'un hachage si vous passez une chaîne comme clé, elle recherchera la chaîne dans les clés.

Mais lors de la création de hash, vous passez le symbole en tant que clé, puis has_key? va chercher les clés en utilisant le symbole.

Si vous utilisez Rails, vous pouvez utiliser Hash#with_indifferent_access pour éviter cela; les deux hash[:my_key] et hash["my_key"] pointent vers le même enregistrement




Related