Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

195
Vistas
No encadene la llamada del método ordinario después del operador de navegación segura

No puedo encontrar el problema con esta advertencia de rubocop Do not chain ordinary method call after safe navigation operator.

 price_array = user&.user_price_fluctuation&.market_price&.sort << user_price&.sort
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Solo piense en lo que hace el operador de navegación segura: se evalúa como nil si el objeto al que se llama el método es nil .

Entonces, si foo no es nil , entonces foo&.bar llamará a bar en foo , pero si foo es nil , entonces foo&.bar es nil .

Es por eso que no tiene sentido encadenar una llamada de método ordinaria después del operador de navegación segura:

 foo&.bar.baz

Si foo no es nil , esto funcionará, pero si foo es nil , entonces foo&.bar también es nil y está intentando llamar a nil.baz , que no funciona. En otras palabras: el código solo funciona si ya sabes que foo no es nil , ¡pero entonces no necesitarías el operador de navegación segura en primer lugar!

Lo mismo es cierto para su código: si cualquier user o cualquiera de los valores intermedios en la cadena es nil , entonces está llamando a nil << something , que no funciona. Debe asegurarse de que toda la cadena utilice el operador de navegación segura:

 price_array = user&.user_price_fluctuation&.market_price&.sort&.<<(user_price&.sort)

Por supuesto, la solución aún mejor es olvidarse del operador de navegación segura y, en cambio, averiguar de dónde provienen esos valores nil en primer lugar y arreglarlo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda