2010-03-17 16 views
12

मैं कैसे ओवरराइड करते/सेट authlogic बजाय दोनों साइनअप और प्रमाणीकरण के लिए उपयोगकर्ता नाम क्षेत्र के ईमेल फ़ील्ड का उपयोग करने, है कभी कभी कुछ कुछ पंजीकरण परिदृश्योंauthlogic ईमेल

उत्तर

11

हैं के लिए बहुत तीव्र एक उपयोगकर्ता नाम + एक ई-मेल होने आप बस login कॉलम को हटा दें और email कॉलम जोड़ें, ऑथलॉगिक बाकी करेगा।

सभी वैकल्पिक/आवश्यक डीबी कॉलम के लिए यह उदाहरण readme देखें।

+12

जादू! इसके अलावा मैंने यह भी पाया कि यह भी काम करता है: कृत्यों_as_authentic do | c | c.login_field =: ईमेल अंत – ADAM

+2

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

10

बेहतर उत्तर यह कोशिश करें ... ठीक है, यदि आवश्यक हो तो authlogic मणि अपडेट करें!

user_session.rb

class UserSession < Authlogic::Session::Base 
    find_by_login_method :find_by_email #for example or you can make what ever method see exapmle 2 
end 

--- उदाहरण 2

user_session.rb

class UserSession < Authlogic::Session::Base 
    find_by_login_method :find_by_anything 
end 

user.rb

class User < ActiveRecord::Base 
    acts_as_authentic 

    def self.find_by_anything(login) 
    find_by_login(login) || find_by_email(login) || find_by_id(login) 
    end 
end 
+1

उत्तर के लिए धन्यवाद amrnt! – ADAM

3

जैसा कि एडम की टिप्पणी में इस प्रश्न का एक अच्छा जवाब है। इसे अपने उपयोगकर्ता मॉडल में जोड़ें:

class User < ActiveRecord::Base 
    acts_as_authentic do |c| c.login_field = :email end 
end 
संबंधित मुद्दे