Ruby-Devise采用多种形式登录

以User的手机号/邮箱/用户名登录为例。

1.首先在app/models/user.rb中

 (1)自定义变量

    attr_accessor:login

 (2)自定义一个方法来允许登录的条件

def self.find_for_database_authentication(allow_conditions)
  conditions = allow_conditions.dup
  if login = conditions.delete(:login)
    where(conditions.to_h).where(["lower(name) = :value OR lower(email) = :value OR lower(phone) = :value", { :value => login.downcase }]).first
  elsif conditions.has_key?(:name) || conditions.has_key?(:email) || conditions.has_key?(:phone)
    where(conditions.to_h).first
  end
end

2.在app/models/user.rb中加入

devise::authentication_keys =>:login.

这样就可以实现用多种形式登录了。希望能帮助大家!

 

转载于:https://my.oschina.net/u/3727756/blog/1573746

你可能感兴趣的:(Ruby-Devise采用多种形式登录)