0

我需要在 Rails 中创建一个网站结构,其中有管理员、工作人员和客户。管理员需要控制一切,可以查看所有内容,工作人员需要仅控制客户端并能够查看所有客户端信息,客户端无法控制任何内容,但可以查看自己的数据。

实现这一目标的最佳方法是什么?

我正在考虑制作一个管理员模型,has_many :workers然后has_many :clients创建一个工作模型,has_many :clients然后belongs_to :administrator创建一个客户端模型belongs_to :worker。这是最有效的方法吗?

4

1 回答 1

2

标准方式是品牌UserRole型号。然后添加一些像设计这样的身份验证宝石和像cancan这样的自动化宝石,您可以在其中设置特定角色的能力。

在你的情况下

class Role < ActiveRecord::Base
  has_many :users
end

class User < ActiveRecord::Base 
  belongs_to :role
end

class Ablility
  include CanCan::Ability  

  def initialize(user) 
    case user.role.name.to_sym
    when :admin          
      can :manage, :all
    when :worker
      can :manage, User, :role => { :name => 'client' }
    when :client
      can :read, User, :user_id => user.id
    end
  end
end
于 2012-05-12T16:07:17.563 回答