params[:id]とfind_byメソッドの意味~ヘルスケアwebサービスを自分で作る医者の日記~


progate 9回 ラスト

URLの指定で、他人の投稿にアクセスできてしまいのを防ぐ回

def ensure_correct_user
    @post = Post.find_by(id: params[:id])
    if @post.user_id != @current_user.id
      flash[:notice] = "権限がありません"
      redirect_to("/posts/index")
    end

find_byメソッドの意味がスッキリした
SQLの id というカラムから、params[:id]に合致するものを探し、
それをインスタンス変数として@post に渡している。
これは投稿そのもの、一列丸ごと 

ここでparams[:id]にする意味がわからなかったが

params[:id]はルートの指定を格納している
posts/1
みたいな

ユーザー各ページのURLを入れ込むことによって、ここにアクセスすることを防いでいる
と判明!!