Rails - установить ID равным 1 для каждой новой ассоциации?

Это более теоретический вопрос, я думал об этом виде «проблемы» в течение более длительного периода времени и не мог найти реального ответа на него.

Давайте начнем с этой простой настройки:

project.rb

has_many :tasks

а также

task.rb

belongs_to :project

Теперь у каждого проекта может быть задача.

Представьте себе совершенно свежую БД:

Если после этого я создам новый проект(1) и 5 задач для этого проекта, задачи 1-5 будут связаны с проектом 1, верно?

Теперь, если я создам еще один проект(2) и создам для этого проекта 5 новых задач, идентификатор будет начинаться с 6 и увеличиваться до 11.

Возникает вопрос: возможно ли, что идентификатор задач для второй проект снова начинается с 1, даже если уже есть запись задачи 1-5 для проекта 1? В основном я хочу, чтобы каждый проект имел своего рода «изолированные» задачи, чтобы каждая задача снова начиналась с идентификатора 1 для каждого проекта. Таким образом, было бы намного удобнее найти, например, задачу 23 для проекта 2 и задачу 23 для проекта 1, просто выполнив поиск по идентификатору.

Имеет ли это смысл?

Пожалуйста, дайте мне знать, если что-то не ясно.

Заранее всем спасибо как всегда!

Привет!

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
20
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Может быть разница между идентификатором БД и идентификатором, используемым для маршрутизации и отображения.

Например,

вы можете использовать отдельное поле под названием displayed_id и поместить туда любой номер, который вы хотите. Вы можете установить для него ограничение, чтобы оно было уникальным по отношению к вашему project_id. Тем не менее, вы можете найти задачу, всегда выбирая project.tasks.find_by(displayed_id: params[:id])

Спасибо за ваш вклад. Это звучит как отличная идея. Я уже проголосовал за это, но нужно проверить позже! Я также подумал об ассоциации has_many :through, которая связана с самой задачей. Но ваша идея звучит намного проще, чем создание таблицы соединений.

Prometheus 10.04.2019 16:26

Другие вопросы по теме