我正在处理应用程序,但在登录应用程序时遇到了一些问题。当我向应用程序提交用户名和密码时,我得到:
undefined method 'api_key' for nil:NilClass
中的:
app/controllers/user_sessions_controller.rb:51:in 'create'
创建方法如下:
def create
user = User.find_by_username(params[:username])
if (user && user.authenticate(params[:password]))
render json: {logged_in: true, access_token: @user.api_key.access_token}
else
render json: {logged_in: false, access_token: nil}
end
end
我很确定这种语法有效,因为它在用户控制器中正确生成访问令牌,但由于某种原因,它会在这里抛出错误。
答案 0 :(得分:2)
user
与@user
不同。
@user
是一个实例变量,user
是方法的本地变量。
使用哪种方法取决于您的需求,但您可能希望使用另一个或。
def create
@user = User.find_by_username(params[:username])
if (@user && @user.authenticate(params[:password]))
render json: {logged_in: true, access_token: @user.api_key.access_token}
...