[英]How do I create an Agent model that can spans across Companies in a scope based multi tenancy app in Rails
我已經構建了一個多租戶應用程序,該應用程序具有屬於Company
User
和Report
,如下所示(多租戶應用程序使用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
擁有company
, user
和role
而不是用戶級別的role
(也許他是一家公司的代理人,但管理另一家公司;等等。)。 所有這些都取決於您真正需要做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.