【问题标题】:Validations based on session data, sharing data between subdomains基于会话数据的验证,在子域之间共享数据
【发布时间】:2012-02-15 08:26:03
【问题描述】:

我们正在构建一个产品支持应用程序。这个想法是拥有多个子域,每个子域都用于支持其他组织的产品。我们称之为账户——每个账户都与一个子域绑定。 用户也有角色 - 但是,用户可以在 account1 上拥有一个角色,在 account2 上拥有另一个角色。

基本上有两个问题:

1) 许多验证基于当前用户的角色。由于它依赖于 current_account(即会话数据),因此我无法在模型中进行此类验证。这让我看到了一些丑陋的控制器代码(丑陋,在某种意义上它真的感觉不合适)。我想在模型类变量中存储 current_account,但我读到这不是线程安全的。有什么建议吗?

2) 几乎每条数据库记录都特定于当前帐户;因此,几乎每个表都应该有一个 account_id 列,并且模型应该有一个 belongs_to 帐户关联。我想避免这种情况。第一件(显而易见的)事情是为每个帐户建立一个单独的数据库,但是

a) 有共享表

b) 老板说这个方案不能接受(会有很多账号,用户数量比较少)。还有第三种方法吗?

【问题讨论】:

  • 您是否在使用任何类型的权限管理 gem?它们可能有助于减轻编写重复权限检查的痛苦,并添加一些有用的助手。
  • @DevinM - 是的,我正在使用 CanCan(这很棒),但它也从会话数据中获取信息(当前用户可以做什么),所以我不知道它如何帮忙?

标签: ruby-on-rails validation session subdomain multi-tenant


【解决方案1】:

如果有人遇到类似问题: 描述的问题称为multitenancy;理解default_scope 应该会有所帮助。另外,multitenant gem 对我很有效。

【讨论】:

    猜你喜欢
    • 2011-06-16
    • 2016-12-27
    • 2011-02-27
    • 2022-11-05
    • 2010-12-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2017-07-03
    相关资源
    最近更新 更多