0

CanCan に関して次の質問があります。

ユーザーに異なる役割があり、それぞれに重み (ID) がある場合、対応する役割を持つ異なるリソースを持つことはできますか?

ユーザーの重みがリソースの重み以上である場合にのみ、各リソースへのアクセスを許可することは可能ですか? 例えば:

役割:

  • 管理者 => 3
  • ライター => 2
  • リーダー => 1
  • 基本 => 0

質問 1 の例:

資力:

Resouce1 の役割は Writer です

そして、管理者またはライターのロールを持つユーザーのみがアクセスできます

質問 2 の例:

リソース 2 => 0

すべてのユーザーが Resource2 にアクセスできます

ルール (current_user.role_id < resource.role_id の場合) はリソースを表示できません

4

1 に答える 1

1

確かにできます。Cancan は、これを行うように簡単に構成できます。Ryan Bates による Railscast をお勧めしますhttp://railscasts.com/episodes/192-authorization-with-cancan

それは実際に彼の宝石です。しかし、彼はそれを非常によく説明し、あなたがやりたいことの良いスタートを切ることができます.

class Ability
  include CanCan::Ability

  def initialize(user)
    can :update, Resource do |r|
      r.resource_weight <= user.role_weight
  end
end

編集: いくつかの基本的なアイデア コードが添付されています。まだ機能的ではありませんが、アイデアを提供します。レールキャストはそれを理解するのに役立ちます。

于 2013-01-16T21:46:11.613 に答える