2011-09-18 29 views
0

我目前正在尝试使用Devise gem创建私人用户配置文件。到目前为止,我已经注册,登录,注销和编辑配置文件功能。问题是,当用户登录时,他可以通过输入url users/[username]来查看所有其他用户。我对rails比较陌生,所以我仍然在研究如何使用会话。使用Devise创建私人配置文件

所以问题是我如何限制用户访问特定于其他用户的部分网站?甚至更好,这是容易做到与设计宝石?

换句话说,如果我登录是作为用户约翰。我应该能够看到网站/用户/约翰(这是我的个人资料),但没有看到网站/用户/格雷格。

感谢

回答

4

设计不会这样做,但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