【问题标题】:Relationship between different Devise+Cancan roles不同 Devise+Cancan 角色之间的关系
【发布时间】:2013-02-13 08:43:41
【问题描述】:

我正在我的 Rails 3 应用程序中实现身份验证+授权系统。 我与用户和角色之间存在 HABTM 关系。

我将担任的角色是:经理、经销商、操作员、管理员

现在一个经理可以有很多经销商在他手下。如何建模这种关系?

这是一个简单的问题,但我找不到答案。这里还有一个类似的问题:Role-dependent associations 但它并没有正确地清除事情。

编辑

我认为我的要求更简单。对我来说,用户只能是管理员、操作员、经销商或经理。

为此,我可以简单地将角色列添加到用户表。现在将如何执行经理和经销商之间的关系?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 devise cancan


    【解决方案1】:

    我认为您正在寻找类似的东西

    class Organization < ActiveRecord::Base
      has_many :users
      has_many :managers
      has_many :dealer
      has_many :admins
      has_many :operators
      has_many :dealer_users, :through => :managers, :class_name=>"User"
    end
    
    class Admin < ActiveRecord::Base
      has_many :organizations
      belongs_to :user
    end
    
    class Dealer
      has_many :organizations
      belongs_to :user
    end
    
    class Operator < ActiveRecord::Base
      has_many :organizations
      belongs_to :user
    end
    
    class Manager < ActiveRecord::Base
      has_many :dealers
      belongs_to :organization
    end
    
    class User < ActiveRecord::Base
      has_many :organizations
      has_many :admins
      has_many :operators
      has_many :managers
      has_many :dealers
    end
    

    【讨论】:

    • 我可以不用组织模型吗?
    • 是的,你也可以不这样做。但是,我假设您拥有的角色(如经理、操作员等)应该属于某个顶级系统,可能是一个组织。因此,就您而言,这是一种普遍的关系,可以让您继续思考。
    • 如果我的用户只有一个角色,该怎么办?实现看起来如何?
    猜你喜欢
    • 2013-01-02
    • 1970-01-01
    • 2015-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-07-10
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多