首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建可以跨Rails中基于范围的多租户应用程序中的公司的Agent模型

如何创建可以跨Rails中基于范围的多租户应用程序中的公司的Agent模型
EN

Stack Overflow用户
提问于 2019-01-09 19:58:34
回答 1查看 27关注 0票数 0

我已经构建了一个多租户应用程序,它具有属于一个CompanyUserReport,如下所示(多租户应用程序使用company_id来处理其他所有内容-用户和报告)。

company.rb

代码语言:javascript
复制
class Company < ApplicationRecord
    has_many :reports
    has_many :users
end

user.rb

代码语言:javascript
复制
class User < ApplicationRecord
    belongs_to :company
    has_many :reports
end

report.rb

代码语言:javascript
复制
class Report < ApplicationRecord
    belongs_to :user
    belongs_to :company
end

我现在希望添加一个Agency模型(带有agency_users),它将使能够管理多个公司(以及公司报告)。代理将需要能够从一个公司切换到另一个公司。

我该如何解决这个问题呢?代理有很多公司

代码语言:javascript
复制
class Agent < ApplicationRecord
    has_many :companies
end

我不太明白代理如何在company_ids之间切换,以便查看它所负责的公司(它的客户)的报告。

EN

回答 1

Stack Overflow用户

发布于 2019-01-09 20:34:56

根据评论,这里有一个可能会有帮助的解决方案

代码语言:javascript
复制
class Agency < ApplicationRecord
  has_many :companies
  has_many :users
end

class Company < ApplicationRecord
    has_many :reports
    belongs_to :agency
end

class Users < ApplicationRecord
    has_many :reports
    belongs_to :agency
    enum role: [:agent]
end

现在,当用户登录到您的应用程序时,向他显示他当前控制的公司的下拉列表。将此id存储在会话中,并使用它来查询数据:

current_user.reports.where(company_id: session[:company_id].to_i)为例;

创建和删除它们也是如此。

然而,这并不是最佳的解决方案(我不确定您的意图是什么)。

我会用一些更通用的东西,比如每个公司的用户角色,UserCompanycompanyuserrole,而不是用户级别的role (也许他是一家公司的代理,但管理另一家公司;等等)。所有这些都会根据你真正需要做的事情而变化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54109630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档