【问题标题】:Active Admin and the Apartment Gem活跃管理员和公寓宝石
【发布时间】:2016-01-07 21:11:09
【问题描述】:

我是 Active Admin 的新手,但就我目前所见,我认为这很容易实现。

我有一个带有公寓 gem 的应用来添加多租户。

我正在向我的应用程序添加活动管理员。 Apartment 使用 PostgreSQL 模式来隔离数据。例如,默认情况下,您在 Apartment 中的模型有一个“公共”租户,除非您调用类似 Apartment::Tenant.switch!('abc') 的名称。

在我的应用程序中,我的 UserCompany 模型在公共租户中,其他所有内容都在租户中。所以开箱即用的 Active Admin 可以正常工作,只是租户模型不显示任何记录 - 正如它们应该显示的那样。

我做了一些修改并手动添加了Apartment::Tenant.switch!('abc') 我的 AA 模型文件之一,效果很好。这是一个理想的解决方案:

  • 当租户中的AdminUser 登录设置为默认值时(比如第一个租户)
  • 在每个租户模型上,都可能有一个选择菜单,用于提交参数 (?tenant=abc),然后更改租户
  • 活动租户可能保存在 AdminUser 会话存储中,因此您可以在相同的租户数据中工作,直到需要切换。

我想我自己可以很容易地做到这一点,但我想看看是否有任何我需要解决的 Active Admin 特定问题:

  • AA 是否有等效的应用程序控制器?将租户切换逻辑与主要逻辑保持在其中会很好。
  • 备用 AA 设计AdminUser 有一个单独的会话变量存储可用,对吗?

任何建议都将不胜感激 - 一旦我整理好我的最终解决方案/代码,我会将其发布回这篇文章。

【问题讨论】:

    标签: ruby-on-rails activeadmin apartment-gem


    【解决方案1】:

    AA 是否有等效的应用程序控制器?将租户切换逻辑与主要逻辑保持在其中会很好。

    确实,有一个 ActiveAdmin::BaseController,但是 gem 的作者并没有谈论使用它来定制,不知道为什么。似乎是您谈论的逻辑的好地方。

    我以前从来不需要修改它,但是here's a blog article from someone who did

    备用 AA Devise AdminUser 有一个单独的会话变量存储可用吗?

    嗯。 Devise 使用 Warden 进行会话管理,它支持 multiple user 'scopes' logged in simultaneouslyseparate session data,如果内存服务是从我在代码中挖掘出来的,Warden 会将单独的会话数据放在同一个 cookie 中的不同键中。不确定这是否是您的意思,但我证实它绝对不会在我当前使用 ActiveAdmin 的 Rails 项目中为用户和管理员使用不同的 cookie。

    不是一个确定的答案,而是移动球!

    【讨论】:

    • 我认为这回答了我的两个问题 - 当我尝试这个时,我会回来更新等。谢谢!
    • 我似乎倒退了一步:stackoverflow.com/questions/35378248/…
    • 我尝试了 ActiveAdmin::BaseController 但它似乎不起作用。我的印象是 Active Admin 模块无法访问 Apartment 方法。到目前为止,这让我有点过头了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多