0

管理者、労働者、クライアントがいるレールでウェブサイトの構造を作る必要があります。管理者はすべてを制御してすべてを表示できる必要があり、ワーカーはクライアントだけを制御してすべてのクライアント情報を表示できる必要があります。クライアントは何も制御できませんが、自分のデータを表示できます。

これを達成するための最良の方法は何ですか?

has_many :workers管理者モデルを作成しhas_many :clients、次にワーカーモデルを作成has_many :clientsbelongs_to :administrator、次にクライアントモデルを作成することを考えていましたbelongs_to :worker。これはこれを行うための最も効率的な方法ですか?

4

1 に答える 1

2

標準的な方法は、メーカーUserRoleモデルです。次に、deviseのような認証gem、特定の役割の能力を設定できるcancanのようなautorizationgemを追加します。

あなたの場合

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 に答える