2009-11-30 3 views
0

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

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

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

ответ

2

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

0

Вы можете моделировать 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 

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

Смежные вопросы