unless rails present opposite not nil blank ruby-on-rails ruby null

ruby on rails - rails - ¿Hay un Ruby, o Ruby-ismo para not_nil? opuesto de nil? ¿método?



ruby unless (5)

Cuidado con otras respuestas que presentan el present? como una respuesta a tu pregunta.

present? es lo opuesto a blank? en rieles.

present? verifica si hay un valor significativo. Estas cosas pueden fallar un present? comprobar:

"".present? # false " ".present? # false [].present? # false false.present? # false YourActiveRecordModel.where("false = true").present? # false

Considerando que a !nil? cheque da:

!"".nil? # true !" ".nil? # true ![].nil? # true !false.nil? # true !YourActiveRecordModel.where("false = true").nil? # true

nil? comprueba si un objeto es realmente nil . Cualquier otra cosa: una cadena vacía, 0 , false , lo que sea, no es nada.

present? es muy útil, pero definitivamente no es lo opuesto a nil? . Confundir los dos puede conducir a errores inesperados.

Para su caso de uso present? funcionará, pero siempre es inteligente estar al tanto de la diferencia.

No tengo experiencia en Ruby, por lo que mi código se siente "feo" y no idiomático:

def logged_in? !user.nil? end

Prefiero tener algo así como

def logged_in? user.not_nil? end

¿Pero no puede encontrar tal método que se nil? nada nil?


Pareces demasiado preocupado con los booleanos.

def logged_in? user end

Si el usuario es nulo, ¿has iniciado sesión? devolverá un valor de "falsey". De lo contrario, devolverá un objeto. En Ruby no necesitamos devolver verdadero o falso, ya que tenemos valores "verídicos" y "defectuosos" como en JavaScript.

Actualizar

Si está utilizando Rails, puede hacer que esto se lea mejor utilizando el present? método:

def logged_in? user.present? end


Puedes usar lo siguiente:

if object p "object exists" else p "object does not exist" end

Esto no solo funciona para nada, sino también para falso, por lo que debe probar para ver si funciona en su uso.


Tal vez este podría ser un enfoque:

class Object def not_nil? !nil? end end