2012-06-02 15 views
18

के बजाय उपयोगकर्ता नाम के साथ प्रमाणित प्रमाणीकरण मैं डेविस के लिए नया हूं और प्रमाणीकरण कुंजी के रूप में एक ईमेल पता का उपयोग कर इसे ठीक से काम कर रहा हूं। हालांकि, मेरे पास एक उपयोग केस है जिसके लिए उपयोगकर्ता नाम की आवश्यकता है और मुझे यह काम नहीं लग रहा है।ईमेल

मैंने उपयोगकर्ताओं की तालिका में एक स्ट्रिंग कॉलम, "उपयोगकर्ता नाम" जोड़ा है, इन्हें फ़ील्ड बदल दिया है: ईमेल से: साइन-इन फॉर्म में उपयोगकर्ता नाम, और devise.rb में प्रमाणीकरण कुंजी को बदल दिया है: उपयोगकर्ता नाम अभी तक जब मैं साइन इन करने जाता हूं तो मुझे इस प्रॉम्प्ट से मुलाकात की जाती है: "कृपया एक ईमेल पता दर्ज करें"।

मैं क्या गलत कर रहा हूं?

**new.html.erb** 

    <div><%= f.label :username %><br /> 
    <%= f.email_field :username %></div> 

**User.rb** 
class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable, :authentication_keys => [:username] 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :remember_me, :username 
    # attr_accessible :title, :body 
end 

**devise.rb** 
config.authentication_keys = [ :username ] 
+0

क्या आपने अपने रेल ऐप को पुनरारंभ किया है? – rb512

+0

हां, पुनरारंभ रेल सर्वर ने आपके द्वारा उल्लेखित किए गए कार्यों को भी खींच लिया। कोई आनंद नहीं है। – nulltek

उत्तर

40

अपने config/initializers/में devise.rb टिप्पणी हटाएं config.authentication_keys = [ :email] और करने के लिए config.authentication_keys = [ :username ]

अद्यतन इसे बदल:
आपका प्रपत्र की गलत।
बदलें f.email_fieldf.text_field सबसे पहले करने के लिए

+0

इस तरह मैंने इसे सेट किया है। config.authentication_keys = [: उपयोगकर्ता नाम] – nulltek

+0

पवित्र गाय जो बेवकूफ था। मुझे यह इंगित करने के लिए धन्यवाद। मान लीजिए कि जब मैं थक गया हूं तो मुझे सामान के साथ खेलना नहीं चाहिए। – nulltek

+0

धन्यवाद .........! –

1
  • , माइग्रेशन चलाने के लिए सुनिश्चित करें।

bundle exec rake db:migrate

  • वसीयत के मामले में दृश्य उत्पन्न करें, अन्यथा वसीयत चूक का प्रयोग करेंगे।

rails generate devise:views

  • बदलें वसीयत/विचारों आप चाहते हैं के रूप में (उपयोगकर्ता नाम के लिए ईमेल क्षेत्र की जगह क्षेत्र)

  • पुनः प्रारंभ वेबसर्वर

आशा है कि यह मदद करता है!