Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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 为嵌套管线创建相对ID_Ruby On Rails_Nested Routes - Fatal编程技术网

Ruby on rails 为嵌套管线创建相对ID

Ruby on rails 为嵌套管线创建相对ID,ruby-on-rails,nested-routes,Ruby On Rails,Nested Routes,我试图为Rails中的嵌套路由创建第二个id列 我有一条类似这样的路线:/projects/:project\u id/bugs/:bug\u id 项目具有多个:bug关系,bug属于:project。现在,路由中显示的bug_id是在将模型保存到数据库时生成的标准增量id 然而,我更希望它是相对的项目 换句话说,我想在bug模型上创建一个名为relative\u id的列,它从每个项目中的1开始,并自动递增 例如: /projects/1/bugs/1 #should take me to

我试图为Rails中的嵌套路由创建第二个id列

我有一条类似这样的路线:
/projects/:project\u id/bugs/:bug\u id

项目具有多个
:bug
关系,bug
属于:project
。现在,路由中显示的
bug_id
是在将模型保存到数据库时生成的标准增量id

然而,我更希望它是相对的项目

换句话说,我想在bug模型上创建一个名为
relative\u id
的列,它从每个项目中的1开始,并自动递增

例如:

/projects/1/bugs/1 #should take me to the first bug of project one
/projects/2/bugs/1 #should take me to the first bug of project two
我的问题是,我是否必须手动维护这个
相对id
列,或者是否有一些Rails的“魔力”可以让我更容易地使用

routes.rb:

resources :projects do
    get 'bugs/feed' => 'bugs#feed'
    get 'bugs/groups' => 'bugs#groups'
    resources :bugs
    resources :permissions, :only => ['create']
end

我建议你不要这样做,因为这只会让你的生活更加困难。例如,您不必执行
Bug.find(2)
,而必须执行
Bug.where(项目id:5,相对id:2)
project.find(5).bugs.where(相对id:2)
。这可能看起来没什么大不了的,但它会比你意识到的更经常地妨碍你

如果您对
bug
使用常规的“全局”自动增量id,您仍然可以使用类似
/projects/5/bugs/2
的漂亮URL(如果只有能够访问project X的人才能访问它的bug,您可能无论如何都要这样做)。一个新项目的bug ID总是从1开始,这对用户很重要吗

如果你决定你真的需要这么做,我很确定你需要自己去实现它。可能在数据库级别(而不是在Rails中)执行此操作会更好,只是出于一致性的原因。您需要这样做,以获得以前的
MAX(relative\u id)
并创建新记录,同时不能创建其他记录(否则将导致
relative\u id
冲突)。这里有一个相关的问题可能会帮助您:


我知道这并不是你想要的答案,但我希望这会有所帮助。

你尝试过什么?您的
routes.rb
中的实际代码是什么样子的?我还没有尝试手动实现相对id,因为我希望Rails会有一个功能,我可以利用它来处理自动递增。如果没有,我想我能够做到,但我想在继续之前确保我没有遗漏一些明显的东西。我将使用相对id几乎完全用于演示目的,标准id仍然存在,所以这不应该是一个问题。非常感谢你!这就是我要找的信息。我只是想确定我没有忽略任何可以简化流程的东西。