2016-04-04 11 views
3

私は認証にdeviseを使用しています。今、私はユーザープロファイルを設定しています。誰もが各ページにアクセスできることを除けば、すべての設定が完了しています(ログインすることなくプロフィールを見ることができます)。正しいユーザーだけが自分のプロフィールページを見ることができるようにするにはどうすればよいですか?Railsのユーザープロフィールページは正しいユーザーにのみアクセス可能

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' 

ショービュー...

<div class="home-page-content"> 
    <%= @user.id %> 
<h1>Users#show</h1> 

<p>Find me in app/views/users/show.html.erb</p> 
</div> 
+0

-

評論家は、認可に役立つ素敵な逸品です。あなたの特定のQのためのhttps://stackoverflow.com/users/2325924/7urkm3n答えが最良の方法です。 –

答えて

3

これは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 
0

ユーザーとプロファイルの間にhas_one belongs_to関係を作成します。あなたのコントローラーには、現在のユーザーのプロフィールのみを表示するロジックを含めることができます。あなたはhttps://github.com/CanCanCommunity/cancancan宝石はすぐに便利になるかもしれませんhttps://github.com/elabs/pundit

関連する問題