Ruby البحث عن معرفات المستخدمين في مصفوفة

مرحباً،

أحتاج هذا الأمر:

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

وهذا يعمل بشكل جيد لمعرف/مستخدم واحد، ولكن لدي حوالي 1500 مستخدم (لدي قائمة/مصفوفة بمعرفاتهم) ولا أعرف كيف أسردها جميعًا.

ما أريد تحقيقه… أحتاج إلى تحديث كلمة مرور مجمعة (نفس كلمة المرور للاختبار فقط) لجميع المستخدمين. لقد قمت بذلك بالفعل لمستخدم واحد وهو يعمل، والآن أحتاج إلى طريقة سريعة.

إعجاب واحد (1)

قد ينجح هذا.

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

يمكنك انتحال شخصية المستخدمين. لذا ربما لا تحتاج إلى القيام بذلك؟

أو يمكنك البحث في جوجل عن “ruby loop array” كمثال لكيفية عمل الحلقات.

ويمكنك استخدام User.find(id) لتوفير بعض ضغطات المفاتيح.

إعجاب واحد (1)

مرحباً جاي… المسألة هي أنني لا أحتاج إلى تحديث جميع المستخدمين… فقط بعضهم بمعرفات عشوائية.

لقد حاولت باستخدام u = User.find_by_id([150,152,167,258,665])

لكن هذا يعيد دائمًا المعرف 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 = 'something'
end
5 إعجابات

هل يمكن أيضًا استخدام نطاق من معرفات المستخدمين، على سبيل المثال من 100 إلى 300؟
شكرا

نعم، إنه SQL متوافق مع المعايير.

3 إعجابات