ruby-on-rails - 调整范围规则作为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 的一些好的特性。
解决方案
任何租户都可以访问表中的一些记录,而在同一个表中租户的一些记录有点违反多租户的理念。
以及“一个或另一个字段是空白的”也不是一个超级好的模式。
我建议为每个租户创建一个全局记录的克隆。
推荐阅读
- python - 如何使用 daframe 中的数据从 python 更新表
- javascript - 如何在 NuxtAuth v.4 中获取令牌值?
- firebase - 在 Kotlin 中处理收集的正确方法是什么?
- python-3.x - 小部件不可用。请安装 widgetsnbextension 或 ipywidgets 4.0
- java - 我的应用程序无法在 android 6 上运行,但如果在 android 9-11 上运行则可以运行
- bash - bash while 循环给出语法错误,说缺少'['
- android - 如何使用适用于 Android 和 iOS 的 Xamarin 表单在特定频道上的 youtube 上上传视频?
- javascript - 部署到 github 页面时不显示图像
- c# - MassTransit - 未消耗随机中介响应
- javascript - 单击按钮时如何删除特定元素