Routes Padrino:确定控制器中的路由名称

Routes Padrino:确定控制器中的路由名称,routes,padrino,Routes,Padrino,有没有办法在padrino控制器内确定路由名称?例如,在before块中,我希望能够根据路由采取一些预定的操作。比如说: before do check_authorization_for(:route_name) end 其中:route_名称类似于update、delete或create之类的东西。现在,我只有代码来检查当前用户是否有权限在每个控制器方法的开头执行请求的操作。我们的授权方案依赖于数据库中的信息,这些权限由控制器操作键入,因此如果有办法确定控制器中路由的名称,即如果我可以

有没有办法在padrino控制器内确定路由名称?例如,在before块中,我希望能够根据路由采取一些预定的操作。比如说:

before do
  check_authorization_for(:route_name)
end
其中:route_名称类似于update、delete或create之类的东西。现在,我只有代码来检查当前用户是否有权限在每个控制器方法的开头执行请求的操作。我们的授权方案依赖于数据库中的信息,这些权限由控制器操作键入,因此如果有办法确定控制器中路由的名称,即如果我可以确定正在调用更新操作,我可以只测试单个块的授权,而不必在每个操作中进行检查

我确信一定有一个非常简单的方法来实现这一点,但我似乎找不到任何关于它的文档。提前感谢您的帮助。

试试看

before :show, :edit, :destroy do
    Post.find(params[:id])
end
或者,如果希望直接访问路由对象:

request.route_obj

如果您想混合当前路径,rails中有一些类似于当前页面的内容

# http://localhost:3000/category/1/products/page/3
current_path('page' => 4) # => http://localhost:3000/category/1/products/page/4
试一试

或者,如果希望直接访问路由对象:

request.route_obj

如果您想混合当前路径,rails中有一些类似于当前页面的内容

# http://localhost:3000/category/1/products/page/3
current_path('page' => 4) # => http://localhost:3000/category/1/products/page/4

不幸的是,这不是我真正想要的。在我们的数据库中,我们将有一个类似于{resource:'foo',action:'update',acl_id:1234}的授权记录,因此在控制器中,我希望能够执行类似于Actions.whereresource:'foo',action:'update'的操作,以便找到acl_id值。在本例中,update是被调用的控制器操作,因此它不在id参数中,而是实际的控制器操作。这有意义吗?这几乎正是我所需要的。我最终使用request.route_obj.named.to_s,这就得到了我想要的东西。我从未见过或听说过request.route_obj,所以这非常有用。非常感谢。不幸的是,这不是我想要的。在我们的数据库中,我们将有一个类似于{resource:'foo',action:'update',acl_id:1234}的授权记录,因此在控制器中,我希望能够执行类似于Actions.whereresource:'foo',action:'update'的操作,以便找到acl_id值。在本例中,update是被调用的控制器操作,因此它不在id参数中,而是实际的控制器操作。这有意义吗?这几乎正是我所需要的。我最终使用request.route_obj.named.to_s,这就得到了我想要的东西。我从未见过或听说过request.route_obj,所以这非常有用。非常感谢。