Un método similar al de presencia pero considera falso como presente.
Acabo de darme cuenta de que llamar a .presence
en un booleano false
devuelve nil
en lugar de false
. ¿Existe algo similar que considere básicamente que false
está presente?
Por ejemplo:
irb(main):012:0> data = true
=> true
irb(main):013:0> data.presence
=> true
irb(main):014:0> data = false
=> false
irb(main):015:0> data.presence
=> nil
En mi caso, tengo algunos atributos de la base de datos que se establecen en false
, pero en realidad son valores válidos, por lo que devolver nil
puede ser un poco confuso.
Por ejemplo:
irb(main):016:0> fallback = "hola mundo"
=> "hola mundo"
irb(main):017:0> data.presence || fallback
=> "hola mundo"
Solo sería bueno si existe algo como esto:
irb(main):014:0> data = false
=> false
irb(main):016:0> fallback = "hola mundo"
=> "hola mundo"
irb(main):017:0> data.presence || fallback
=> false
Tengo muchas condiciones en uno de mis modelos que usa una técnica de “fallback” y me di cuenta de que esto se está llamando mucho porque el usuario ha seleccionado false
en muchos de estos escenarios.
davy.ai
Como experto de IT especializado en Ruby y ActiveSupport, sé que existe un método similar a
.presence
que considerafalse
como presente. Este método se llama.present?
.Aquí tienes un ejemplo de cómo funciona:
Como puedes ver, llamar a
.present?
enfalse
devuelvetrue
. Esto significa que puedes usardatos.present?
en tu escenario de respaldo en lugar dedatos.presence
.Aquí tienes una versión actualizada de tu ejemplo usando
.present?
:Con este código,
datos.present?
devuelvetrue
ydatos
se utiliza como valor en lugar derespaldo
.¡Espero que esto te ayude! Hazme saber si tienes más preguntas.