私は Active Admin を初めて使用しますが、これまで見てきたことから、これは非常に簡単に実装できると思います。
マルチテナンシーを追加するアパートメント ジェムを含むアプリがあります。
アプリにアクティブな管理者を追加しています。Apartment は、PostgreSQL スキーマを使用してデータを分離します。たとえば、デフォルトでは、Apartment のモデルには、次のようなものを呼び出さない限り、「パブリック」テナントがありますApartment::Tenant.switch!('abc')
。
私のアプリでは、モデルUser
とCompany
モデルはパブリック テナントにあり、それ以外はすべてテナントにあります。したがって、テナント モデルにレコードが表示されないことを除いて、既定の Active Admin は正常に動作します。
Apartment::Tenant.switch!('abc')
AA モデル ファイルの 1 つを手動で追加したところ、問題なく動作しました。理想的なソリューションは次のとおりです。
- テナントの
AdminUser
ログがデフォルトに設定されたとき (最初のテナントなど) - テナント化された各モデルには、パラメーター (?tenant=abc) を送信する選択メニューがあり、その後テナントが変更されます。
- アクティブなテナントはおそらく
AdminUser
セッション ストアに保持されるため、切り替えが必要になるまで同じテナント データで作業できます。
私はこれを自分で簡単に行うことができると思いますが、対処する必要がある Active Admin 固有の問題があるかどうかを確認したかったのです。
- AA にはアプリケーション コントローラに相当するものがありますか? メインのロジックとは対照的に、テナントの切り替えロジックをそこに保持しておくとよいでしょう。
- 代替の AA Devise
AdminUser
には、別のセッション変数ストアがありますよね?
任意の提案をいただければ幸いです-整理したら、最終的なソリューション/コードをこの投稿に投稿します。