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 に答える