这是一个更具理论性的问题,我一直在考虑这种“问题”,但找不到任何真正的答案。
让我们从简单的设置开始:
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的组织。
这有意义吗?
如果不清楚,请通知我。
像往常一样提前感谢大家!
问候!
答案 0 :(得分:1)
DB ID与用于路由和显示的ID之间可能会有差异。
例如,
您可以使用一个名为displayed_id
的单独字段,并在其中输入任意数字。
您可以对其设置约束,使其相对于project_id唯一。
就是说,您可以通过始终project.tasks.find_by(displayed_id: params[:id])