gpt4 book ai didi

ruby-on-rails - Active Admin 和 Apartment Gem

转载 作者:行者123 更新时间:2023-12-03 16:19:50 24 4
gpt4 key购买 nike

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

我有一个带有公寓 gem 的应用程序可以添加 Multi-Tenancy 。

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

在我的应用程序中,我的 UserCompany 模型在公共(public)租户中,其他所有内容都在租户中。因此,开箱即用的 Active Admin 工作正常,除了租户模型不显示任何记录 - 正如他们应该的那样。

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

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

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

  • AA 是否有相当于应用程序 Controller 的功能?与主要租户切换逻辑相比,将租户切换逻辑保留在那里会很好。
  • 备用 AA Devise AdminUser 有一个单独的 session 变量存储可用,对吗?

如有任何建议,我们将不胜感激 - 一旦我解决了问题,我将把我的最终解决方案/代码发布回这篇文章。

最佳答案

Does AA have an equivalent of a application controller? It would be nice to keep the tenant switching logic in there vs the main one.

的确,有一个 ActiveAdmin::BaseController,但 gem 作者没有谈论使用它进行自定义,不知道为什么。似乎是您正在谈论的逻辑的好地方。

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

The alternate AA Devise AdminUser has a separate session variable store available right?

嗯。 Devise 使用 Warden 进行 session 管理,它支持 multiple user 'scopes' logged in simultaneously以及separate session data ,并且如果从我在代码中挖掘时开始提供内存,Warden 会将单独的 session 数据放在同一 cookie 中的不同键中。不确定这是否是您的意思,但我证实在我当前使用 ActiveAdmin 的 Rails 项目中,它绝对不会为用户和管理员使用不同的 cookie。

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

关于ruby-on-rails - Active Admin 和 Apartment Gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34665234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com