只有正确的用户才能访问Rails用户个人资料页面

我正在使用设计进行身份validation。 现在,我正在设置用户个人资料。 我已经设置了所有内容,除了每个页面都可供所有人访问(因此您可以在不登录的情况下查看配置文件)。 如何制作它以便只有正确的用户才能看到自己的个人资料页面?

users_controller.rb

class UsersController < ApplicationController def show @user = User.find(params[:id]) end end 

的routes.rb

 devise_for :users resources :users, only: [:show] get 'users/show' 

显示视图……

 

Users#show

Find me in app/views/users/show.html.erb

这个应该有助于检测current_user是否正确。

 class UsersController < ApplicationController before_action :check_user private def check_user if current_user != @user redirect_to root_url, alert: "Sorry, This Profile belongs to someone else !" end end end 

在用户和配置文件之间创建has_one belongs_to关系。 在控制器中,您可以包含一些仅显示当前用户配置文件的逻辑。

Pundit是一个很好的gem,有助于授权 – https://github.com/elabs/pundit