我有一个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,必须由该用户拥有,以便他们能够管理它。
我怎样才能做到这一点?