私には2つのモデルのユーザーと伝記があり、どちらも1対1の関連付けがあります。
各ユーザーは単一の経歴を持っています。私の問題は、ユーザーが自分の経歴のみを編集できるようにしたいのですが、URLから1人のユーザーが他のユーザーの経歴を編集できることです。
EX。"0.0.0.0:3000/biographies/8/edit"。ここで、ユーザーはIDを簡単に変更できます。
どうすればこれを止めることができますか?
私には2つのモデルのユーザーと伝記があり、どちらも1対1の関連付けがあります。
各ユーザーは単一の経歴を持っています。私の問題は、ユーザーが自分の経歴のみを編集できるようにしたいのですが、URLから1人のユーザーが他のユーザーの経歴を編集できることです。
EX。"0.0.0.0:3000/biographies/8/edit"。ここで、ユーザーはIDを簡単に変更できます。
どうすればこれを止めることができますか?
コントローラのbiographies
「編集」アクション(および更新)の下で、次の呼び出しのすぐ下にこれを挿入します@biography = Biography.find(params[:id])
。
unless @biography.user == current_user
redirect_to root_path, notice: "You cannot do that" and return
end
before_filter :fetch_bio, :only => [:edit, :update]
def fetch_bio
@biography = current_user.biographies.find(params[:id])
end