-1

各ユーザーがネットワーク内で異なる役割を持つことができるアプリをセットアップしたいと考えています。

したがって、ユーザー A はネットワーク X の「管理者」ですが、ネットワーク Y の「クライアント」でもあります。各役割は、ネットワーク内で独自の機能を持っています。たとえば、管理者は投稿を作成でき、クライアントは自分のコメントのみを破棄できます。

このセットアップを実現するための最適なテーブル構造は何ですか? Devise + CanCan + ... セットアップを使用する必要がありますか?

4

1 に答える 1

2

rolify (リソース スコーピング付きロール管理ライブラリ) gem と呼ばれる gem があり、 devise と cancan linkでセットアップすることもできます。モデルUserがあると仮定しましょう。

インストール:

gem "rolify"
bundle
rails g rolify:role Role User

役割を追加できます:

user = User.find(1)
user.add_role :admin

小切手:

user.has_role? :admin

リソース インスタンスをスコープとするロールを定義する場合:

user = User.find(2)
user.add_role :moderator, Post.first

そしてあなたの能力.rbで:

if user.has_role? :admin
  can :manage, :all
else
  can :read, Post
  can :write, Post, :id => Post.with_role(:moderator, user).map{ |f| f.id }
end

with_roleメソッドを使用すると、ユーザーがロールを持つ Post インスタンスを制限できることに注意してください

于 2012-12-24T11:13:45.257 に答える