Ruby encontrar array de IDs de usuarios

Hola,

Necesito este comando:

u = User.find_by_id('150)
u.password='some_password'
u.save!

Y esto funciona bien para una ID/usuario, el problema es que tengo alrededor de 1500 usuarios (tengo una lista/array de sus IDs) y no sé cómo listarlos a todos.

Lo que quiero lograr… necesito actualizar la contraseña en bloque (solo para pruebas, la misma contraseña) para todos los usuarios. Ya lo hice para uno y funciona, ahora necesito un método rápido.

1 me gusta

Esto podría funcionar.

User.all.update_all(password: 'no es una buena idea')

Puedes suplantar a los usuarios. Así que tal vez no necesites hacer esto.

O puedes buscar en Google “ruby loop array” para ver un ejemplo de cómo funcionan los bucles.

Y puedes hacer User.find(id) y ahorrarte unas cuantas pulsaciones.

1 me gusta

Hola Jay… el caso es que no necesito actualizar a todos los usuarios… solo a algunos con un conjunto aleatorio de IDs.

Lo intenté con u = User.find_by_id([150,152,167,258,665])

Pero eso siempre devuelve el ID 150 y cambia la contraseña solo para ese usuario. También intenté con User.find(id: 150,152....) y no ayudó…

Nota: Estoy intentando migrar el foro a otra plataforma de discusión, y hay un número de usuarios que han escrito un montón de mensajes pero ya no vienen al foro (y por alguna razón las columnas password_hash y salt están vacías para esos usuarios, el script de importación de usuarios no permite importar usuarios que no tengan estos valores definidos en la base de datos PGSQL), así que no puedo dejar que restablezcan sus contraseñas. Lo que puedo hacer es establecer una contraseña complicada, y ciertamente pueden ir a la opción de Contraseña olvidada y restablecer una nueva más tarde.

User.where podría ser lo que buscas y luego la sintaxis de postgres para encontrar cosas que coincidan con un array. Nunca lo recuerdo del todo.

User.where('id IN (1,2,3,4,5)').find_each do |u|
  u.password = 'something'
end
5 Me gusta

¿También es posible usar un rango de IDs de usuario, por ejemplo, de 100 a 300?
Gracias

Sí, es SQL que cumple con los estándares.

3 Me gusta