current_userがnilとなってしまう。(undefined method `id' for nil:NilClass)
Rails apiで投稿された日記にいいねする機能の実装を試みています。
認証機能にdevise,devise_token_authを使用しています。
投稿された日記一覧から選択された日記のidをパラメーターとして受け取り、ログイン中のユーザーのidと合わせて中間テーブルに保存することで機能することを想定しています。
ログインした状態でリクエストを送っているのですが、コントローラー部分のcurrent_api_v1_userのがnilのためidを参照できないとエラーが出てしまいます。
コントローラー
likes_controllers.rb
class Api::V1::LikesController < ApplicationController
def create
#current_api_v1_userがnilでエラーとなる
like = Like.find_or_initialize_by(user_id: current_api_v1_user.id,diary_id: likes_params[:diary_id])
if like.save
render json:{ status: 200, like:like.diary }
else
render json:{ status: 500, message:"登録に失敗しました。"}
end
end
private
def likes_params
params.permit(:user_id, :diary_id)
end
end
リクエスト部分
diary.js
export const like = (diaryId) => {
return client.post(`/diaries/${diaryId}/likes`, {
headers: {
"access-token": Cookies.get("_access_token"),
client: Cookies.get("_client"),
uid: Cookies.get("_uid"),
}
});
};
別の機能では問題なくcurrent_userメソッドが使用できているので原因がわからず悩んでいます。
一応正常に機能している方も参考までに載せておきます。
diaries_controllers.rb
class Api::V1::DiariesController < ApplicationController
def index
diaries=[]
#(このcurrent_api_v1_userはnilではなく正常に機能します。)
diariesList = Diary.where.not(user_id: current_api_v1_user.id)
diariesList.each do |diary|
diaries << {
diary: diary,
user: diary.user,
likes: diary.likes.count
}
end
render json:{status: 200, diaries: diaries }
end
end
リクエスト部分
indexDiary.js
export const indexDiary = () => {
return client.get("diaries", {
headers: {
"access-token": Cookies.get("_access_token"),
client: Cookies.get("_client"),
uid: Cookies.get("_uid"),
}
});
};
リクエストの方法はdiaryIdの有無くらいでヘッダー情報も同様にリクエストに含めているのですが、、、
初歩的な質問かとは思いますがご教授いただけたら幸いです。
0