初投稿です
railsで 他人のユーザー情報、投稿情報を変更できないようにする方法を記述していこうと思います
今回は、投稿情報のケースを紹介します(投稿に関するモデルはBookとし、Userモデルと関連づけているものとします。)
まず、以下のように記述します。
(こちらの記事は以下の記事を参照させていただいて作っております)
https://qiita.com/nao0725/items/47606b8975603a12fd5e
books_controller.rb
①before_action :correct_user, only: [:edit, :update]
def edit
:
end
def update
:
end
private
def correct_user
②@book=Book.find(params[:id])
③redirect_to(books_path) unless @book.user_id ==current_user
①before_actionは各アクションが実行される前に呼びます。
詳細ページなどはどのユーザーからでも閲覧できるようにしたいので、今回はonlyを使って
before_actionの対象をedit,update飲みにしています。
②@book=Book.find(params[:id])で編集しようとしていた投稿のIDを取得します
③redirect_to(books_path) unlessを使い@book.user_id==current_userが正しくなければ一覧ページに戻されます。
これで機能が完成しました。