我正在使用Rails 3.0.10,我目前正在使用CanCan来确定用户在应用程序中的不同能力。
我正在使用Devise进行用户身份验证。
管理员用户是否有办法暂时使用CanCan“成为”另一个用户?这对于成为可能遇到与其帐户相关的独特问题的特定用户尤其有用。
因此,简单来说,我只希望能够以任何给定用户身份登录以查看他们看到的内容。不确定是否有CanCan或Devise功能。
更新
我刚看到这个:
How-To: Sign in as another user if you are an Admin。
我还没有测试过,但它可能是我正在寻找的答案!如果这是您采取的方法,或者您有其他想法,请随意提供一些见解!
答案 0 :(得分:4)
我找到了我想要的东西,而且它有一颗宝石!
这很容易使用。我只需要将gem switch_user
添加到我的Gemfile中。
然后将<%= switch_user_select %>
添加到我的布局中。正是我想要的!
答案 1 :(得分:0)
CanCan
是授权,您在身份验证方面受到了限制。如果您使用的是基于warden
的任何内容(例如devise
),请参阅at the bottom.
制作一个范围(如:admin
),用于存储管理员用户。通过#set_user
设置要个性化的用户。见上面的链接。
答案 2 :(得分:0)
如果设计与用户在您的应用中看到的内容无关,也许您可以按照以下方式执行操作:
1)为非管理员用户创建新功能
2)测试用户是否可以做或看到的事情
3)根据这些能力生成自定义页面
ability = Ability.new(@user)
Rails.logger.debug("* ability.can?(:update, @user):#{ability.can?(:update, @user)}") # see if user can access the user
Rails.logger.debug("* User.accessible_by(ability):#{User.accessible_by(ability).inspect.to_s}") # see if returns the records the user can access
Rails.logger.debug("* to_sql:#{User.accessible_by(ability).to_sql}") # see what the generated SQL looks like