我需要在rails中创建一个网站结构,其中有管理员,工作人员和客户端。管理员需要控制所有内容并能够查看所有内容,工作人员需要只控制客户端并能够查看所有客户端信息,客户端无法控制任何内容,但可以查看自己的数据。 / p>
最好的方法是什么?
我正在考虑制作一个has_many :workers
和has_many :clients
的管理员模型,然后创建一个has_many :clients
和belongs_to :administrator
的工作模型,然后创建一个belongs_to :worker
的客户模型1}}。这是最有效的方法吗?
答案 0 :(得分:2)
标准方式是制作User
和Role
型号。然后添加一些身份验证宝石,如devise和autorization gem,如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