Aquí es la mejor solución para obtener registros al azar de la base de datos. RoR proporciona todo en facilidad de uso.
Para obtener registros aleatorios del uso de DB muestra, a continuación se muestra la descripción de eso con el ejemplo.
Backport of Array # muestra basada en github.com/marcandre/backports/ de Marc-Andre Lafortune Devuelve un elemento aleatorio o n elementos aleatorios de la matriz. Si la matriz está vacía y n es nil, devuelve nil. Si se pasa n y su valor es menor que 0, se genera una excepción ArgumentError. Si el valor de n es igual o mayor que 0, devuelve [].
[1,2,3,4,5,6].sample # => 4
[1,2,3,4,5,6].sample(3) # => [2, 4, 5]
[1,2,3,4,5,6].sample(-3) # => ArgumentError: negative array size
[].sample # => nil
[].sample(3) # => []
Puede utilizar la condición con según su requisito como el ejemplo siguiente.
User.where (activo: true) .sample (5)
volverá al azar 5 de usuario activo de la mesa usuario
Para obtener más ayuda, por favor visite: http://apidock.com/rails/Array/sample
Escuché que RAND() es muy lento porque primero busca cada registro y de alguna manera elige uno, pero probablemente estoy equivocado. –
@Blaenk: It * is * muy lento en MySQL. No obstante, no sé sobre la implementación. – Swanand
+1 para hacer un alcance, me gusta eso también. –