authlogic电子邮件作为用户名

时间:2010-03-17 23:53:13

标签: ruby-on-rails ruby authlogic

如何覆盖/设置authlogic以使用电子邮件字段而不是用户名字段进行注册和身份验证,对于某些注册方案,用户名+电子邮件偶尔会过于激烈

3 个答案:

答案 0 :(得分:11)

如果您只是删除login列并添加email列,则authlogic将完成剩下的工作。

对于所有可选/必需的数据库列,请参阅此示例readme

答案 1 :(得分:11)

更好的答案尝试这个......好吧,如果需要更新authlogic gem!

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

答案 2 :(得分:3)

由于亚当的评论包含了对这个问题的一个很好的答案。将其添加到您的用户模型:

class User < ActiveRecord::Base
  acts_as_authentic do |c| c.login_field = :email end
end