2016-04-04 20 views
3

Kimlik doğrulaması için kullanıyorum. Şu anda, kullanıcı profillerini ayarlıyorum. Her sayfanın herkes tarafından erişilebilir olması dışında, herşeyi kurdum (böylece giriş yapmadan profilleri görebilirsiniz). Bunu, yalnızca doğru kullanıcının kendi profil sayfasını görebilmesi için nasıl yapabilirim?Rails kullanıcı profili sayfası sadece doğru kullanıcı için erişilebilir durumda

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' 

gösteri görünümü ...

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

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

Sen https://github.com/CanCanCommunity/cancancan mücevher kısaca kullanışlı bulabilir. https://stackoverflow.com/users/2325924/7urkm3n cevabı, belirli Q'niz için en iyi yoldur. –

cevap

3

Bu, current_user öğesinin doğru algılanmasına yardımcı olur.

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

Kullanıcı ve profil arasında bir has_one belongs_to ilişkisi oluşturun. Denetleyicinizde, yalnızca geçerli kullanıcının profilini gösteren bir mantık ekleyebilirsiniz.

Pundit yetki yardımcı olan bir güzel mücevher - https://github.com/elabs/pundit

İlgili konular