0

我正在开发一个应用程序,但在登录应用程序时遇到了一些问题。当我向应用程序提交用户名和密码时,我得到:

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

我很确定这种语法有效,因为它在用户控制器中正确生成了访问令牌,但由于某种原因,它在这里抛出了错误。

4

1 回答 1

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}

 ...
于 2013-04-14T19:57:54.543 回答