2010-03-17 117 views

回答

11

如果/套authlogic,而不是使用兩個註冊和認證的用戶名場電子郵件字段,你只需刪除login列並添加一個email列,authlogic將完成剩下的工作。

見這個例子readme所有可選/必需DB列。

+12

魔法!另外,我發現使用這個還曾: acts_as_authentic做| C | c.login_field =:電子郵件 結束 – ADAM 2010-03-18 00:14:22

+2

,我需要用電子郵件地址登入,但零售的用戶名。所以我更喜歡ADAM的評論答案。 – 2011-06-09 16:52:07

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 2010-06-19 21:59:14

3

正如Adam的評論對這個問題包含了一個很好的答案。添加到您的用戶模型:

class User < ActiveRecord::Base 
    acts_as_authentic do |c| c.login_field = :email end 
end 
相關問題