Ruby: найти массив ID пользователей

Привет,

Мне нужна эта команда:

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

Это отлично работает для одного ID/пользователя, но у меня около 1500 пользователей (у меня есть список/массив их ID), и я не знаю, как обработать их всех.

Чего я хочу добиться… нужно массово обновить пароли (одинаковый пароль только для тестирования) для всех пользователей. Я уже сделал это для одного, и это работает, теперь мне нужен быстрый способ.

Это может сработать.

User.all.update_all(password: 'не лучшая идея')

Вы можете имитировать пользователей. Так что, возможно, вам не нужно этого делать?

Или вы можете найти в Google «ruby loop array», чтобы увидеть пример работы циклов.

А можно использовать User.find(id) и сэкономить несколько нажатий клавиш.

Привет, Джей… дело в том, что мне не нужно обновлять всех пользователей, только некоторых со случайным набором ID.

Я пробовал u = User.find_by_id([150,152,167,258,665]),

но это всегда возвращает пользователя с ID 150 и меняет пароль только для него. Также пробовал User.find(id: 150,152....), но это не помогло…

Примечание: я пытаюсь мигрировать форум на другую платформу для обсуждений, и есть несколько пользователей, которые написали много сообщений, но больше не заходят на форум (по какой-то причине столбцы password_hash и salt пусты для этих пользователей, скрипт импорта пользователей не позволяет импортировать тех, у кого эти значения не определены в базе данных PGSQL), поэтому я не могу позволить им сбросить пароли. Что я могу сделать, так это задать сложный пароль, и они, конечно, смогут позже воспользоваться опцией «Забыли пароль» и установить новый.

User.where может быть тем, что вам нужно, а затем синтаксис PostgreSQL для поиска элементов, соответствующих массиву. Я никогда точно не помню.

User.where('id IN (1,2,3,4,5)').find_each do |u|
  u.password = 'что-то'
end

Можно ли также использовать диапазон ID пользователей, например от 100 до 300?
Спасибо

Да, это SQL, соответствующий стандартам.