Как это можно моделировать с точки зрения базы данных?

У меня есть модель Project, у которой есть дата начала и дата окончания. Проект может иметь несколько целей, и каждая цель должна иметь статус (успешный или нет) на каждый день.

Так, например, скажем, у меня есть проект под названием "Get in better shape", который начинается сегодня и заканчивается через 1 месяц. Я добавляю следующую цель: "Run 1 km". Для каждого дня проекта я хочу отметить цель как успешную или неудачную. Я думал, что результат должен быть другой, объективной. Грубо, у меня это:

Project has_many :objectives
Objective belongs_to :project
 has_one :result
Result belongs_to :objective

Дело в том, что я тоже думал о том, чтобы добавить день как модель, потому что сейчас очень сложно показать определенный день (и это результат)... но почему-то это не будет правильно.

Существует ли более простой способ представления моделей? Как вы обрабатываете приложения, где диапазоны дат актуальны/важны?

1 ответ

Недавно я работал над чем-то подобным. Вы можете настроить его следующим образом:

Project has_many :objectives
Objective belongs_to :project
 has_many :result
Result belongs_to :objective

Затем используйте cron для создания записи в базе данных Result каждый день. Rails устанавливает по умолчанию отметки времени в базе данных, поэтому фильтруйте результаты за определенный день с помощью поля created_at.

Вы можете использовать каждый раз, когда gem настраивает задания cron.

licensed under cc by-sa 3.0 with attribution.