2011-09-18 1 views
0

現在、Devise gemを使用してプライベートユーザプロファイルを作成しようとしています。これまで私はサインアップ、ログイン、ログアウト、プロファイル機能の編集を行っています。問題は、ユーザーがサインインすると、url users/[username]に入力することで他のすべてのユーザーを見ることができることです。私はレールには比較的新しいので、私はまだセッションで作業する方法を考えています。Deviseを使用してプライベートプロファイルを作成する

したがって、他のユーザーに固有のサイトの部分へのユーザーのアクセスを制限するにはどうすればいいですか?そして、これはDeviseの宝石で簡単にできますか?

つまり、iサインがユーザーjohnである場合。私はsite/users/john(これは私のプロフィールです)を見ることができるはずですが、site/user/gregは見えません。

おかげ

答えて

4

Deviseはこれをしませんが、CanCanは言及された人のようになります。あなたがやろうとしていることをCanCanが初心者のために少し重いかもしれません。あなたがする必要があるのは、ユーザーが誰かを確認するbefore_filterを追加することだけです。例えば

class UserProfilesController < ApplicationController 

    before_filter :verify_owner 

    def show 
    @user_profile = current_user.user_profile 
    # or maybe this way, not sure how you have your relations set up 
    # @user_profile = UserProfile.where(:user => current_user) 
    end 

private 

    def verify_owner 
    # assume the route looks like this /user/:username 
    redirect_to root_url unless current_user.username == params[:username] 
    end  

end 
+0

これは私が新しい技術が楽しいので、私はカンカンを少し探検すると思いますが、探していたものです。ありがとう – GTDev

関連する問題