Ruby find array of users ID

Hello,

I need this command:

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

And this is working just fine for one ID/user, the thing is that I have around 1500 user (I have list/array of theirs ID’s) and dont know how to list them all.

What I want to accomplish… need to update bulk password (same password testing only) for all users. I already do for one and it works, now I need quick method.

1 Like

This might do it.

User.all.update_all(password: 'not a good idea')

You can impersonate users. So maybe you don’t need do do this?

Or you can Google “ruby loop array” for an example of how loops work.

And you can do User.find(id) and save a few keystrokes.

1 Like

Hey Jay… the thing is that I dont need to update all users… just some of them with random set of IDs.

I’ve try with u = User.find_by_id([150,152,167,258,665])

But that always return for 150 ID and change password for only that User. Also try with User.find(id: 150,152....) didnt help…

Note: I’m trying to migrate the forum to another disscusion platform, and there are a number of users who have written a bunch of messages but are no longer coming to the forum (and for some reason the password_hash and salt columns are empty for those users, the user import script does not allow importing users who do not have these values ​​defined in the PGSQL database.), so I can’t let them reset their passwords. What I can do is that I set a complicated password, and they can certainly go to the Forgotten password option and reset a new one later.

User.where might be what you want and then the postgres syntax for finding stuff that matches an array. I can never quite remember.

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

Is it also possible to use a range of users ID, for example from 100 to 300 ?
Thanks

Yes, it’s standards compliant SQL.

3 Likes