我有一个FooController
但没有模型 Foo - 它是第三方服务的门户。在FooController
中,该do_bar
方法访问的资源是baz
. 目前任何人都可以通过 管理其他人的baz
,FooController
我想将管理限制在他们自己的范围内。
在我的ability.rb 中,我在initialize
方法中写入了以下内容:
can :manage, :foo
但我想做的是写这样的东西(当然这不起作用):
can :manage, :foo
@baz.user == user
end
Foo控制器:
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
,必须由该用户拥有,以便他们能够管理它。
我怎样才能做到这一点?