2012-07-11 13 views
7

ActiveAdminをメイン管理インターフェイスとして使用して、マルチテナントアプリケーションを構築しています。私はacts_as_tenantの宝石を使ってデータをうまく分離しました。ActiveAdminのマルチテナント、マルチ管理ユーザー

すべてのユーザーのユーザーモデルオブジェクトとしてAdminUserモデルを使用しました。

他のユーザーを追加するために、AdminUserもテナントにスコープされます。

これはActiveAdmin /工夫が認証しようとしたとき、私は以下に示すように、それは最初find_tenantフィルタに当たっていると仮定しているため、ログインをオフに投げている:

class ApplicationController 
    set_current_tenant_through_filter 

    before_filter :find_tenant 

    def find_tenant 
    if admin_user_signed_in? 
     set_current_tenant(Company.find(current_admin_user.company_id)) 
    end 
    end 

これを回避する方法がわかりません...ユーザーにログインさせ、アプリケーションがログインしたユーザーからcompany_idを取得し、テナントを設定し、ActiveAdminに表示されるすべてのデータがそのテナントを介してスコープされるようにします(この部分はacts_as_tenant宝石を通してうまくいきます。 。

おかげ

答えて

0

私はあなたの疑惑が正しいことだと思う、とfind_tenant方法というadmin_user_signed_inで、その結果、認証の前に呼び出されていますか?偽になる代わりに、afterフィルタを使用するように調整してください(http://guides.rubyonrails.org/action_controller_overview.html#after-filters-and-around-filtersから)。

class ApplicationController 
    set_current_tenant_through_filter 

    after_filter :find_tenant 

    def find_tenant 
    if admin_user_signed_in? 
     set_current_tenant(Company.find(current_admin_user.company_id)) 
    end 
    end 

ないset_current_tenant_through_filterはこのすべてにどのように動作するか確認してください、あなたは同じものを2種類の方法をやろうとしていますか?

関連する問題