Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Cancan和控制台命令“;"耙路";_Ruby On Rails_Rake_Cancan - Fatal编程技术网

Ruby on rails Cancan和控制台命令“;"耙路";

Ruby on rails Cancan和控制台命令“;"耙路";,ruby-on-rails,rake,cancan,Ruby On Rails,Rake,Cancan,如何在控制台中为特定用户获取所有路由(如命令rake路由)?我只想要此用户可以访问的路由 有人知道gem吗,或者是编写我自己的控制台命令处理程序的最佳方法吗?你肯定需要自己编写(我不知道是否有cancan插件可以编写) 首先,cancan不会在连接到routes的特定位置存储您可以访问和不能访问的内容,cancan只允许您选择可以访问给定类或实例的方法,如can:read,User,它不会以任何方式与routes绑定,同时routes也不会直接绑定到模型(它们与控制器相连) 基于这一点,写这样的

如何在控制台中为特定用户获取所有路由(如命令rake路由)?我只想要此用户可以访问的路由


有人知道gem吗,或者是编写我自己的控制台命令处理程序的最佳方法吗?

你肯定需要自己编写(我不知道是否有cancan插件可以编写)

首先,cancan不会在连接到routes的特定位置存储您可以访问和不能访问的内容,cancan只允许您选择可以访问给定类或实例的方法,如
can:read,User
,它不会以任何方式与routes绑定,同时routes也不会直接绑定到模型(它们与控制器相连)

基于这一点,写这样的东西也不是那么容易(不是不可能,但不容易,我不认为它很短)


您最好的选择是尝试模拟测试,您可以尝试访问每个路由(您可能会解析rake路由的输出或读取代码是如何生成的)对于给定的用户,如果该用户无法访问该路径,则将其标记为不可访问。您还需要提供一种在控制台命令中选择用户的方法。

您尝试过什么吗?您有没有可以共享的代码?实际上我很感兴趣,有没有现成的方法(我没有找到任何方法)。如果不是,我会自己尝试,但我从来没有尝试过编写rails控制台命令。我是rails新手。你很有趣,是吗;)我同意下面的答案。在创建每个技能之前,先为其编写一个测试。如果测试失败,请编写规则。通过测试。用这种方法你不会失败的。