私のコントローラーでは、 aproject
が実際に特定の に属していることを確認するために、次のようなものをよく使用しuser
ます。
private
def authorized_user
@project = Project.find(params[:id])
redirect_to root_path unless current_user?(@project.user)
end
ユーザー A はユーザー B のプロジェクトを見ることができないため、これはうまく機能します (代わりに、ユーザー B はルート ページに転送されます)。
ただし、これproject
は実際に存在する URL が要求されている場合にのみ機能します。
たとえば、URLhttp://localhost:3000/projects/1
はユーザーのプロジェクトを表示するか、ルート URL に転送します (別のユーザーがプロジェクトにアクセスしようとした場合)。
しかし、データベースにまったく存在しないプロジェクトにアクセスしようとすると、たとえば次のようになります。
http://localhost:3000/projects/777
...醜いActiveRecord::RecordNotFound
エラーが発生します:
Couldn't find Person with id=777
ここでのユーザー エクスペリエンスを向上させる最善の方法は何でしょうか?
私はまだ Rails プロジェクトを実際にデプロイしたことがないので、本番モードでこのエラーがどのように表示されるかさえわかりません。
誰でも助けることができますか?
ありがとう...