1

Devise と Rolify で CanCan をセットアップしている場合、resourcify を使用してさまざまなリソース タイプへのアクセスを制限できるはずです。

例えば。

model_a と has_many の関係を持つ組織モデルがあるとします。

ユーザーは、所属する単一の組織も持っています。ユーザーは、関連として model_b のインスタンスを多数持っています。組織全体でユーザーがアクセスできる範囲を、ユーザーが所属する組織のみに制限したいと考えています。

私は能力クラスのためにこのようなものを設定できるはずです:

class Ability
  include CanCan::Ability

  def initialize(user)
    user   ||= User.new # guest user (not logged in)
    org_id = user.organization.id unless user.organization.blank?

    if user.has_role?(:user)

     can :access, :home
     can [:read, :calendar], :model_a, :organization_id => user.organization.id if user.organization
    can :read, :model_b, :user_id => user.id
    can [:read, :update], :users, :id => user.id
  end
end

しかし、クエリを特定のユーザーのこの組織だけに制限しない限り、アプリケーションのさまざまな部分にさまざまなリソースがポップアップし続けます。何を与える?ローリファイは自動的にそれを行うべきだと思いましたか? それとも、model_a および model_b クラスで resourcify を使用して設定する必要がありますか? もしそうなら、両方のモデルのジョイン テーブルを自分の rify テーブルにセットアップする必要はありませんか? それともそれはポリモーフィックですか?

ありがとう!

4

0 に答える 0