モデル FooはFooController
ありますが、サードパーティ サービスへのゲートウェイです。では、メソッドFooController
によってアクセスされるリソースはです。現在、誰でも を介して他のユーザーの を管理できます。管理を自分の管理のみに制限したいと考えています。do_bar
baz
baz
FooController
私の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
) をそのユーザーが管理できるようにするために、そのユーザーが所有する必要があるようにしたいと考えています。
これどうやってするの?