首页 > 解决方案 > 调整范围规则作为acts_as_tenant 的一部分?

问题描述

我有一个用于将其与公司联系起来的 railsThing模型acts_as_tenant。这很好用,现在属于公司的用户只能访问与他们公司相关的事物。

class Thing < ApplicationRecord
  acts_as_tenant(:company)
  belongs_to :company
end

现在我在is_global我的东西中添加了一个布尔字段。现在我希望 Thing(通过acts_as_tenant)被限定为范围,以便用户可以访问他们公司的事物任何全局事物。有没有办法配置acts_as_tenant启用这种行为?

我目前的解决方法是放弃acts_as_tenant(:company)此模型中的调用,而是创建一个新的默认范围:

default_scope { where('company_id = ? or is_global = true', ActsAsTenant.current_tenant.id) } 

这似乎可以完成这项工作,尽管我担心我可能会在不知不觉中绕过acts_as_tenant 的一些好的特性。

标签: ruby-on-railsacts-as-tenant

解决方案


任何租户都可以访问表中的一些记录,而在同一个表中租户的一些记录有点违反多租户的理念。

以及“一个或另一个字段是空白的”也不是一个超级好的模式。

我建议为每个租户创建一个全局记录的克隆。


推荐阅读