ログイン中のユーザーが他ユーザーの編集ページにアクセスできないように制限をかけたいのですが、解決できず他のユーザーの編集ページのURLを直接入力すると移遷できてしまいます。
app/views/controllers/prototypes_controller.rb
ruby
1class PrototypesController < ApplicationController 2 before_action :authenticate_user!, only: [:new, :edit, :destroy] 3 4 def index 5 @prototypes = Prototype.all 6 end 7 8 def new 9 @prototype = Prototype.new 10 end 11 12 def create 13 @prototype = Prototype.new(prototype_params) 14 if @prototype.save 15 redirect_to root_path 16 else 17 render :new 18 end 19 end 20 21 def show 22 @prototype = Prototype.find(params[:id]) 23 @comment = Comment.new 24 @comments = @prototype.comments.includes(:user) 25 end 26 27 def edit 28 @prototype = Prototype.find(params[:id]) 29 unless user_signed_in? 30 redirect_to root_path 31 end 32 end 33 34 def update 35 @prototype = Prototype.find(params[:id]) 36 if @prototype.update(prototype_params) 37 redirect_to prototype_path 38 else 39 render :edit 40 end 41 end 42 43 def destroy 44 prototype = Prototype.find(params[:id]) 45 if prototype.destroy 46 redirect_to root_path 47 end 48 end 49 50 private 51 def prototype_params 52 params.require(:prototype).permit(:concept, :image, :title, :catch_copy).merge(user_id: current_user.id) 53 end 54end 55
app/views/controllers/users_controller.rb
ruby
1class UsersController < ApplicationController 2 def show 3 @user = User.find(params[:id]) 4 @prototypes = @user.prototypes 5 end 6end
試してみたこと
1つ目のprototypes_controller.rbのファイルでauthenticate_user!メソッドを使い、editアクションにもunlessを使って制限をかけたつもりですが、何か抜けているのでしょうか。
回答2件
あなたの回答
tips
プレビュー