メインの管理インターフェイスとして ActiveAdmin を使用してマルチテナント アプリを構築しています。私はacts_as_tenant gemを使ってデータをうまく分離しました。
すべてのユーザーのユーザー モデル オブジェクトとして AdminUser モデルを使用しました。
他のユーザーを追加するために、AdminUser のスコープもテナントに限定されます。
ActiveAdmin/Devise が認証を試みると、以下に示すように最初に 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 に表示されるすべてのデータがそのテナントを介してスコープされます (この部分は、 act_as_tenant gem (ログインを通過できる場合)。
ありがとう