Вопрос моделирования данных Rails - PullRequest
0 голосов
/ 30 ноября 2009

Я создаю простое приложение, в котором у меня есть 2 типа задач.

1) обычные задачи - срок их выполнения 2) повторяющиеся задачи - они всплывают как напоминания на указанную дату. Они могут быть созданы как еженедельные или ежемесячные напоминания. Если он создан на неделю, он будет отображаться каждую неделю (в указанную дату недели). Точно так же для месяца необходимо указать неделю и дату.

Каким будет лучший способ моделирования этого сценария?

Ответы [ 2 ]

2 голосов
/ 30 ноября 2009

У меня будет два столбца для объекта напоминания - remind_at (дата) и repeat_frequency (что-то, по которому можно идентифицировать различные повторения). Таким образом, вы можете индексировать столбец remind_at и выполнять поиск по нему довольно быстро. Каждый раз, когда напоминание показывается пользователю, оно будет смотреть repeat_frequency - если оно содержит указания для повторения, установите remind_at на следующую дату, если нет, удалите / заархивируйте напоминание.

0 голосов
/ 30 ноября 2009

Вы можете смоделировать Task, чтобы иметь due_date. Но если задача повторяется, due_date будет нулевым, и вы будете использовать поле recurrence для вычисления next_due_date. recurrence будет строковым полем, содержащим разборную строку типа «вторник» (для еженедельных) или «17» (номер дня для месячных).

def next_due_date
  if due_date
    due_date
  else
    # compute next due date using the 'recurrence' field and today's date
  end
end

Это может или не может быть "лучшим способом" для вас, в зависимости от ваших требований и будущих потребностей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...