簡體   English   中英

如何在Rails中基於范圍的多租戶應用程序中創建可跨公司的代理模型

[英]How do I create an Agent model that can spans across Companies in a scope based multi tenancy app in Rails

我已經構建了一個多租戶應用程序,該應用程序具有屬於Company UserReport ,如下所示(多租戶應用程序使用company_id來定義其他所有內容-用戶和報告)。

company.rb

class Company < ApplicationRecord
    has_many :reports
    has_many :users
end

user.rb

class User < ApplicationRecord
    belongs_to :company
    has_many :reports
end

report.rb

class Report < ApplicationRecord
    belongs_to :user
    belongs_to :company
end

現在,我希望添加一個Agency模型(帶有agency_users ),該模型將使能夠管理多個公司(並且該公司進行報告)。 該代理將需要能夠從一家公司切換到另一家公司。

我將如何處理? 代理商有很多公司

class Agent < ApplicationRecord
    has_many :companies
end

我無法完全確定代理如何在company_ids之間切換以查看其負責的公司(其客戶)的報告。

根據評論,這是一個可能有用的解決方案

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)

創建和刪除它們同樣如此。

但是,這不是最佳解決方案(我不確定您的意圖是什么)。

我會采用一些更籠統的方法,例如每個公司的用戶角色,而UserCompany擁有companyuserrole而不是用戶級別的role (也許他是一家公司的代理人,但管理另一家公司;等等。)。 所有這些都取決於您真正需要做什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM