Представьте себе ситуацию:
В моей модели рельсов я использую IceCube :: Schedule для представления шаблона повторяющихся событий календаря (например, «Каждый второй понедельник месяца»). Итак, у меня есть 3 вида атрибутов в моей модели:
- для расчета: расписание
- для хранения: столбец базы данных, в котором хранится schedule.to_yaml: schedule_yaml
- для представления: набор атрибутов, которые используются для ввода / вывода параметров расписания: interval_unit, interval_amount, дни недели и т. Д.
В зависимости от сценария, из одной категории атрибутов вычисляются другие:
- Ввод процесса: представление атрибутов -> вычисления -> хранилище
- Обработка неверного ввода: представление -> проверка
- Подготовка формы ввода: хранение -> вычисления -> представление
- Вычислительная система (следующая дата в последовательности): хранение -> вычисление -> хранение
Все части системы просты, кроме вычислений. Хотя им может потребоваться довольно много кода для правильной реализации обновления соответствующих атрибутов.
Вы знаете какой-нибудь драгоценный камень или хотя бы несколько идиом, чтобы сделать это элегантным способом?