设计通过用户名或电子邮件查找
Devise find by username or email
设置设计后
我想在 api 会话
中通过用户名或电子邮件获取用户
我将登录名传递给了参数,但 rails 吐出一个错误
User.find_for_database_authentication(:login => params[:username][:email])
模型上 find_for_database_authentication 的覆盖已经完成。
def self.find_for_database_authentication(warden_conditions)
有人有什么提示吗?
设计
class Api::SessionsController < Devise::SessionsController
respond_to :json
def create
resource = User.find_for_database_authentication(:login => params[:username][:email])
if resource.valid_password?(params[:login][:password])
sign_in(:user, resource)
render :json=> {:auth_token=>resource.authentication_token, :email=>resource.email}, :status => :ok
return
end
invalid_login_attempt
end
end
试试这个:User.find_by(username: 'username')
或 User.find_by(email: 'your@email.com')
我通过重写 find_for_database_authentication
来做到这一点:
class User
def self.find_for_database_authentication(auth_hash)
self.where("username = :query OR email = :query", query: auth_hash[:email]).first
end
end
不需要更多。
设置设计后 我想在 api 会话
中通过用户名或电子邮件获取用户我将登录名传递给了参数,但 rails 吐出一个错误
User.find_for_database_authentication(:login => params[:username][:email])
模型上 find_for_database_authentication 的覆盖已经完成。
def self.find_for_database_authentication(warden_conditions)
有人有什么提示吗?
设计
class Api::SessionsController < Devise::SessionsController
respond_to :json
def create
resource = User.find_for_database_authentication(:login => params[:username][:email])
if resource.valid_password?(params[:login][:password])
sign_in(:user, resource)
render :json=> {:auth_token=>resource.authentication_token, :email=>resource.email}, :status => :ok
return
end
invalid_login_attempt
end
end
试试这个:User.find_by(username: 'username')
或 User.find_by(email: 'your@email.com')
我通过重写 find_for_database_authentication
来做到这一点:
class User
def self.find_for_database_authentication(auth_hash)
self.where("username = :query OR email = :query", query: auth_hash[:email]).first
end
end
不需要更多。