Rails-将每个新关联的ID设置为1吗?

时间:2019-04-10 13:50:21

标签: ruby-on-rails activerecord

这是一个更具理论性的问题,我一直在考虑这种“问题”,但找不到任何真正的答案。

让我们从简单的设置开始:

project.rb

has_many :tasks

task.rb

belongs_to :project

现在每个项目都可以有一个任务。

想象一个全新的数据库:

如果以后我为此项目创建一个新的 project(1)和5个任务,则任务1-5将与项目1相关,对吗?

现在,如果我创建另一个 project(2)并为此项目创建5个新任务,则ID将以6开头,直到11。

问题是:即使已经有项目1的任务记录1-5,第二个项目的任务ID是否有可能再次从1开始?基本上我想要的是每个项目都有某种“隔离的”任务,以便每个任务从每个项目的id再次开始。这样,通过搜索id可以找到例如针对项目2的任务23和针对项目1的任务23的组织。

这有意义吗?

如果不清楚,请通知我。

像往常一样提前感谢大家!

问候!

1 个答案:

答案 0 :(得分:1)

DB ID与用于路由和显示的ID之间可能会有差异。

例如,

您可以使用一个名为displayed_id的单独字段,并在其中输入任意数字。 您可以对其设置约束,使其相对于project_id唯一。 就是说,您可以通过始终project.tasks.find_by(displayed_id: params[:id])

来查找任务