您好,
我需要这个命令:
u = User.find_by_id('150)
u.password='some_password'
u.save!
这个命令对一个ID/用户来说工作得很好,但问题是我有大约1500个用户(我有一个包含他们ID的列表/数组),不知道如何列出所有用户。
我想实现的目标……需要批量更新密码(仅测试用相同的密码)给所有用户。我已经为一个用户做过了,并且奏效了,现在我需要一个快速的方法。
您好,
我需要这个命令:
u = User.find_by_id('150)
u.password='some_password'
u.save!
这个命令对一个ID/用户来说工作得很好,但问题是我有大约1500个用户(我有一个包含他们ID的列表/数组),不知道如何列出所有用户。
我想实现的目标……需要批量更新密码(仅测试用相同的密码)给所有用户。我已经为一个用户做过了,并且奏效了,现在我需要一个快速的方法。
这或许可以做到。
User.all.update_all(password: 'not a good idea')
你可以冒充用户。所以也许你不需要这样做?
或者你可以搜索“ruby loop array”来了解循环是如何工作的。
你还可以输入 User.find(id) 来节省一些按键次数。
嘿 Jay……问题是我不需要更新所有用户……只需要更新一些具有随机 ID 的用户。
我尝试过 u = User.find_by_id([150,152,167,258,665])
但这总是返回 ID 为 150 的用户,并且只为该用户更改密码。也尝试过 User.find(id: 150,152....) 也没起作用……
注意:我正在尝试将论坛迁移到另一个讨论平台,并且有许多用户写了很多消息但不再访问论坛(并且由于某些原因,这些用户的 password_hash 和 salt 列为空,用户导入脚本不允许导入在 PGSQL 数据库中未定义这些值的用户),因此我无法让他们重置密码。我可以做的是设置一个复杂的密码,他们以后肯定可以通过“忘记密码”选项重置一个新密码。
您可能想要 User.where,然后是用于查找与数组匹配的 Postgres 语法。我总是记不住。
User.where('id IN (1,2,3,4,5)').find_each do |u|
u.password = 'something'
end
是否也可以使用用户 ID 范围,例如从 100 到 300?
谢谢
是的,这是符合标准的 SQL。