2011-12-05 4 views
3

私はRails 3.0.10を使用していますが、現在、ユーザーがアプリケーション内に持つさまざまな能力を判断するためにCanCanを使用しています。Rails Admin - 他のユーザーになる

私はユーザー認証自体にDeviseを使用しています。

管理者ユーザーがCanCanを使用して別のユーザーに一時的に「なる」良い方法はありますか?これは、アカウントに固有の問題が発生している可能性のある特定のユーザーになるために特に便利です。

単純な言い方をすれば、私はただちに任意のユーザーとしてサインインして、自分が見ているものを見ることができるようにしたいと考えています。 CanCanまたはDevise機能があるかどうかは不明です。

UPDATE

私はこの出くわし:

How-To: Sign in as another user if you are an Admin

私はまだそれをテストしていませんが、私が探していた答えかもしれません!あなたが取ったアプローチであるか、別のアイデアがある場合は、いくつかの洞察を提供してください!

答えて

4

これらの能力に基づいてカスタムページを生成し、私は私が探していたものを見つけて、それのための宝石があります!

switch_user

本当に使いやすいでした。私はちょうど私のGemfileにgem switch_userを追加する必要があります。

次に、私のレイアウトに<%= switch_user_select %>を追加してください。まさに私が望んでいたもの!

0

CanCanは認証であり、あなたは認証に関心があります。 wardendeviseなど)に基づくものを使用している場合は、at the bottom. を参照してください。ここには、管理者ユーザーを保存するスコープ(:adminなど)を作成します。 #set_userでパーソナライズするユーザーを設定します。上記のリンクを参照してください。

+0

十分な情報を提供していないことをお詫び申し上げます。私はちょうど私の質問を更新した。私はユーザー認証のためにDeviseを使用しており、能力を判断するためにCanCanを使用しています。本質的には、私は単に、別のユーザーとしてサインインして、何を見るのかを知りたいが、Admin Interfaceに戻るボタンが残っているだけである。 – ardavis

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 
関連する問題