未定义的方法' api_key'对于nil:nilClass

时间:2013-04-14 19:51:28

标签: ruby-on-rails

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

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

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

1 个答案:

答案 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}

 ...