ruby-on-rails ruby data-structures associative-array

ruby on rails - ¿Cómo verificar si una clave específica está presente en un hash o no?



ruby-on-rails data-structures (5)

Quiero comprobar si la clave "usuario" está presente o no en el hash de sesión. ¿Cómo puedo hacer esto?

Tenga en cuenta que no quiero comprobar si el valor de la clave es nulo o no. Solo quiero comprobar si la clave "usuario" está presente.


¿Siempre puedes usar la Hash#key? para comprobar si la clave está presente en un hash o no.

Si no te lo devolverá false

hash = { one: 1, two:2 } hash.key?(:one) #=> true hash.key?(:four) #=> false


En las últimas versiones de Ruby, ¿la instancia de hash tiene una key? método:

{a: 1}.key?(:a) => true

Asegúrese de usar la clave de símbolo o una clave de cadena según lo que tenga en su hash:

{''a'' => 2}.key?(:a) => false


Es muy tarde pero preferiblemente los símbolos deben usarse como clave:

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

Pero al crear un hash, si pasa una cadena como clave, buscará la cadena en las claves.

¿Pero cuando creas hash pasas el símbolo como clave y has_key? Buscará las teclas usando el símbolo.

Si está usando Rails, puede usar Hash#with_indifferent_access para evitar esto; tanto el hash[:my_key] como el hash["my_key"] apuntarán al mismo registro


Mientras Hash#has_key? hace el trabajo, como señala Matz here , ha sido desaprobado en favor de la Hash#key? .

hash.key?(some_key)


¿La key? Hash key? El método le dice si una clave dada está presente o no.

session.key?("user")