Мы строим интранет в Ruby on Rails, и теперь мы хотим добавить функциональность для напоминаний, когда вы должны что-то сделать, но не сделали этого.Создание напоминаний/уведомлений в Rails
Например, у вас есть модель, Встреча, я хочу отправлять напоминания всем, кто имел встречу, но где отчет собрания пуст (meeting.date < Date.today && meeting.report == ""
). И модель проекта, где у вас есть другие критерии (возможно, project.last_report.date < lastMonday && !project.closed
)
Теперь я могу представить, как создавать эти напоминания с какой-то рейк-задачей, а затем удалять их с помощью какого-либо триггера события, когда вы обновляете собрание или что-то еще, но это кажется как везде я получаю код спагетти.
Моей второй идеей является создание отдельного модуля, который на каждой загрузке страницы извлекает все записи, которые могут быть связаны, и выполняет все эти проверки, а затем возвращает напоминания, однако это, вероятно, будет медленным, чтобы попасть в базы данных. (Возможно, кеширование будет вариантом, но все же)
Итак, кто-нибудь сделал что-то подобное и получил какие-либо идеи о том, как решить нашу проблему?
Спасибо!
Хорошо, так что 1 потенциальная проблема здесь была бы в том, что мне нужна встреча, чтобы иметь напоминание только после того, как собрание прошло. Таким образом, для создания всех новых напоминаний все равно потребуется какая-то огромная задача рейка. –
Альтернативный внешний вид: немедленно создайте напоминания (как показано на рисунке) и только отобразите/предпримите действия над напоминаниями, когда дата «due_on» (или due_at time) прошла. Обратите внимание, что приведенный код также удаляет напоминания, когда их требования были выполнены, чтобы пользователь не увидел напоминание, если они своевременно выполнили требования. Это намного проще. – AndyV
думаю. Вы также можете добавить некоторые специализированные классы в какой-то тип напоминаний/каталог и включить их в качестве mixins, что также не создало бы уродства кода. В целом, ваше решение кажется действительным! –