पासवर्ड पासवर्ड रेल कंसोल से रीसेट करें


92

ऐप चलाते समय आप ईमेल पते से किसी उपयोगकर्ता का चयन कैसे करते हैं और फिर rails consoleडेविस के लिए मैन्युअल रूप से पासवर्ड सेट करते हैं ?

इसके अलावा, मैं डेविस का उपयोग करते समय खातों के हेरफेर के संबंध में अधिक विवरणों को कवर करने के लिए दस्तावेज़ीकरण की समीक्षा करने के लिए कहां जाऊंगा?


Valk: जहाँ () रेल 3 तक उपलब्ध नहीं है। लेकिन, जिस तरह से आपने किया वह ठीक भी है।
14

जवाबों:


139

यह कम या ज्यादा है जैसा आपने वर्णित किया है :-)

# use mongoid
class User
  include Mongoid::Document
end


# then
user = User.where(email: 'joe@example.com').first

if user
  user.password = new_password
  user.password_confirmation = new_password
  user.save
end

6 साल बाद से अपडेट :)

आधुनिक वसीयत सरल वाक्यविन्यास की अनुमति देता है, पुष्टि फ़ील्ड सेट करने की कोई आवश्यकता नहीं है

user.password = new_password; user.save
# or
user.update_attributes(password: new_password)

आह, हम्म। यह एक मानक उपयोगकर्ता के लिए काम करेगा, लेकिन इस मामले में यह admin_users तालिका से है। इस तालिका बनाम उपयोगकर्ताओं से खींचने के लिए उपयुक्त ट्वीक क्या है? बस इसे उपयोगकर्ता के लिए सेट करना = AdminUser ... काम नहीं किया।
6

उम्म, मुझे नहीं पता, क्वेरी मॉडल मॉडल? मेरे लिए, मैंने हमेशा सभी उपयोगकर्ताओं को एक ही तालिकाओं में संग्रहीत किया, जिसमें 'भूमिकाएँ' विशेषता सौंपी गई थी।
सर्जियो तुलेंत्सेव

आप उस संग्रह का नाम बदल सकते हैं जो मॉडल के साथ संदर्भित करता है: store_in विधि। इसलिए, उस कोड से पहले admin_users तालिका देखने के लिए आपको User.store_in 'admin_users' जोड़ना होगा। (यह उत्तर मोंगॉयड का उपयोग करता है)
सर्जियो तुलेंत्सेव

User.store_in 'admin_users'हालांकि प्राप्त करने का प्रयास किया गया undefined method। मैं मेज पर पहुंचने में सक्षम नहीं हूं क्योंकि मैं हर बार एक शून्य वापस पा रहा हूं। पूरी तालिका को क्वेरी करने के बारे में और शुरू में परीक्षण करने के लिए शुरू में परीक्षण करने के लिए शुरू में सभी प्रविष्टियाँ प्राप्त करने के बारे में क्या? (यहाँ MySQL में काम करना, हालाँकि ActiveRecord के साथ कोई फर्क नहीं पड़ता।)
ylluminate

: store_in Mongoid रत्न का एक हिस्सा है। आप User.db
Sergio Tulentsev

55
# $ rails console production
u=User.where(:email => 'usermail@gmail.com').first
u.password='userpassword'
u.password_confirmation='userpassword'
u.save!

1
डेवेल्स को रेलों में बेक किया जाता है, इसलिए pw कंफर्मेशन का इस्तेमाल बेमानी है। User.find_by_email('joe@example.com').update_attributes(:password => 'password')
copremesis

27

यदि आप रेल को सांत्वना में निम्नलिखित चलाते हैं तो उसे चाल चलनी चाहिए:

User.find_by(email: 'user_email_address').reset_password!('new_password','new_password')

http://www.rubydoc.info/github/plataformatec/devise/Devise/Models/Recoverable


6
ध्यान दें विस्मयादिबोधक चिह्न पदावनत है, यह सिर्फ है:User.find_by(email: 'user_email_address').reset_password('new_password','new_password')
आयरिशड्यूबग्यू

1
यह भी ध्यान दें कि आपको एक वैध पासवर्ड दर्ज करना होगा जो आपके डेविस कॉन्फ़िगरेशन में पासवर्ड आवश्यकताओं की पुष्टि करता है।
zwippie

5

आप बस पासवर्ड फ़ील्ड को अपडेट कर सकते हैं, पुष्टि पासवर्ड की कोई आवश्यकता नहीं है, इसे एन्क्रिप्टेड रूप में सहेजा जाएगा

u = User.find_by_email('user@example.com')
u.update_attribute(:password, '123123')

3

किसी कारण के लिए, (पटरियों 2.3 ??)

user = User.where(:email => email).first

मेरे लिए काम नहीं किया, लेकिन

user = User.find_by_email('user@example.com')

इसे करें।


इसका कारण यह है कि जहां (); विधि अभी तक 2.3 रेल में नहीं थी, हम दिनों में वापस (: सभी,: स्थितियां => स्थितियां) का उपयोग करते थे।
डेनिस

3

1.लोगिन को रैलिस कंसोल

$ sudo bundle exec rails console production

2. इसके बाद एडमिनिस्ट्रेटर का पासवर्ड अपडेट करें

irb(main):001:0> user = User.where("username = 'root'")
irb(main):002:0> u = user.first
irb(main):003:0> u.password="root2014@Robin"
=> "root2014@Robin"
irb(main):004:0> u.password_confirmation="root2014@Robin"
=> "root2014@Robin"
irb(main):005:0> u.save
=> true
irb(main):006:0> exit

3. लॉग इन पेज पर जाएं, लॉगिन करने के लिए नए पासवर्ड का उपयोग करें, आनंद लें!

शुभ लाभ!


devise बेक किया हुआ है, इसलिए pw पुष्टिकरण का उपयोग बेमानी है। User.find_by_email('joe@example.com').update_attributes(:password => 'password')
copremesis


0

यदि आपका खाता बहुत से लॉगिन प्रयासों से बंद है, तो आपको भी करने की आवश्यकता हो सकती है:

user.locked_at = ''
user.failed_attempts = '0'
user.save!
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.