Si te encuentras con algún detalle que no entiendes puedes dejarlo en la sección de comentarios y haremos todo lo necesario de ayudarte lo más rápido posible.
Solución:
sort_by
se ejecuta en Ruby, por lo que si tiene un nil
valor, las cosas se romperán de una manera similar a esta:
[3, nil, 1].sort
#=> ArgumentError: comparison of Fixnum with nil failed
order
es ejecutado por su RDBMS, que generalmente funcionará bien con NULL
valores. Incluso puede especificar dónde desea colocar el NULL VALUES
añadiendo NULL FIRST
(generalmente el predeterminado) o NULL LAST
para usted ORDER BY
¿cláusula?
.sort_by
es un método Ruby de Enumerable que se utiliza para ordenar matrices (o array como objetos). Usando .sort_by
hará que todos los registros se carguen desde la base de datos a la memoria del servidor, lo que puede ocasionar serios problemas de rendimiento (así como su problema con los valores nulos).
.order
es un método ActiveRecord que agrega un ORDER BY
cláusula a la sentencia select de SQL. La base de datos se encargará de clasificar los registros. Esto es preferible en el 99% de los casos.
Si sostienes alguna sospecha y capacidad de enriquecer nuestro reseña te recomendamos realizar una referencia y con deseo lo observaremos.