设置完成后 我希望通过用户名或电子邮件在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
答案 0 :(得分:1)
我通过像这样覆盖 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
不需要更多了。
答案 1 :(得分:0)
试试这个:User.find_by(username: 'username')
或User.find_by(email: 'your@email.com')