Rails数据库结构建议?

时间:2012-05-12 15:55:43

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1

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

最好的方法是什么?

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

1 个答案:

答案 0 :(得分:2)

标准方式是制作UserRole型号。然后添加一些身份验证宝石,如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