0

モデル FooはFooControllerありますが、サードパーティ サービスへのゲートウェイです。では、メソッドFooControllerによってアクセスされるリソースはです。現在、誰でも を介して他のユーザーの を管理できます。管理を自分の管理のみに制限したいと考えています。do_barbazbazFooController

私のability.rbでは、initializeメソッドに次のように書きました:

can :manage, :foo

しかし、私がやりたいのは、次のようなものを書くことです (もちろん、これは機能しません):

can :manage, :foo
  @baz.user == user
end

FooController:

load_resource :baz, find_by: :user_data, parent: false

def do_bar
  @baz = Baz.find(params[:user_data]) #necessary otherwise @baz is nil
  authorize! :manage, :foo

  #other stuff
end

私は基本的に、 @baz インスタンス (で操作されているFooController) をそのユーザーが管理できるようにするために、そのユーザーが所有する必要があるようにしたいと考えています。

これどうやってするの?

4

1 に答える 1