首页 > 解决方案 > 带有子记录的 act_as_tenant

问题描述

我正在使用act_as_tenant. 目前,我有一个看起来像这样的模型:

class Portfolio < ApplicationRecord
  acts_as_tenant :organization
  has_many :holdings
end 

另外,我有这个控股模型:

class Holding < ApplicationRecord
  belongs_to :portfolio
end

act_as_tenant为投资组合模型正常工作。也就是说,如果我以与 Portfolio 的组织不匹配的组织身份登录,则该 Portfolio 将不会存在于数据库中。

但是,由于我以不同组织的身份登录,我仍然可以访问控股公司。但是当我尝试去做时holding.portfolio,我得到了nil

有没有办法扩展这种act_as_tenant逻辑,以便父模型的所有子模型也将自动由租户限定范围?

标签: ruby-on-railsruby

解决方案


阅读以下文档acts_as_tenant

Row-level multitenancy each model must have a tenant ID column on it. This makes it easy to filter records for each tenant using your standard database columns and indexes. ActsAsTenant uses row-level multitenancy.

这意味着控股模型也应该具有acts_as_tenant :organization并且具有组织的外键。这也应该适用于您计划添加的其他记录,这些记录依赖于acts_as_tenant


推荐阅读