【发布时间】:2016-05-16 18:17:02
【问题描述】:
我有 4 种用户类型
-SuperAdmin
-Admin
-Manager
-Tenant
我目前有 2 个连接器类
-manager_approval
-reportapproval
租户创建并拥有 Report 类。
我需要确保管理员、超级管理员、经理和租户可以访问 Tenants.report 的实例
目前我有以下设置,但我不确定这是否正确
class SuperAdmin
include Mongoid::Document
has_many :admins
has_many :managers
has_many :reports
end
class Admin
belongs_to :super_admin
has_many :manager_approvals, dependent: :destroy
has_many :managers
has_many :reportapprovals
has_many :reports
end
class belongs_to :admin
has_many :tenants
has_many :reports
has_many :reportapprovals, dependent: :destroy
has_many :coupons
has_many :manager_approvals, dependent: :destroy
end
class Tenant
include Mongoid::Document
has_one :report, dependent: :destroy
has_one :tenant_record, dependent: :destroy, autosave: true
has_many :reportapprovals, dependent: :destroy, autosave: true
has_many :managers
end
class Reportapproval
include Mongoid::Document
belongs_to :tenant, inverse_of: :reportapprovals
belongs_to :manager, inverse_of: :reportapprovals
belongs_to :admins
has_many :reports, dependent: :destroy
belongs_to :manager_approvals
end
class ManagerApproval
include Mongoid::Document
belongs_to :admin, inverse_of: :managers, dependent: :destroy
belongs_to :manager
has_many :reportapprovals
has_many :reports
end
class Report
include Mongoid::Document
belongs_to :tenant, dependent: :destroy
has_and_belongs_to_many :reportapprovals
has_and_belongs_to_many :managers, through: :reportapprovals
has_many :admins, through: :managers
end
我觉得这不对,希望有人对其进行审核。最终,报告由租户创建,经理可以访问报告,管理员可以访问经理可以访问的所有报告,超级管理员可以访问所有经理的所有报告。感谢您的帮助!
【问题讨论】:
标签: ruby-on-rails associations mongoid