Где в Rails заполнить пробелы во временных рядах? - PullRequest
0 голосов
/ 17 января 2012

Мой базовый набор моделей выглядит примерно так (упрощенно):

[ PayPeriod ]
id
start_date
end_date
notes

[ Transaction ]
id
amount
fkPayPeriod

Когда пользователь входит в систему, я хочу представить ему список последних 4 периодов оплаты. Пользователь может выбрать период оплаты для ввода заметок и транзакций.

Я склонен просто сделать что-то подобное в контроллере:

def index
  @pay_periods = PayPeriod.get_or_create_last(4)
end

Сама модель PayPeriod будет реализовывать такое поведение, и записи будут создаваться «по требованию», когда пользователи будут использовать приложение.

Альтернативный подход может заключаться в том, чтобы иметь какой-то другой (фоновый) процесс, который ежедневно обрабатывает счета для активного создания новых PayPeriods. Хотя ни одно из решений не кажется мне особенно сложным, я хотел бы получить отзывы о том, что другие считают, что эта функциональность принадлежит концептуально.

1 Ответ

1 голос
/ 17 января 2012

Я бы сказал, что это концептуально зависит от того, что такое PayPeriod.Является ли это универсальным описанием периодов времени в общем календаре (т. Е. В 2011 году 26 периодов оплаты по две недели каждый)?Если это так, то создание всех PayPeriods принадлежит вашему файлу db / seed.rb.

Если PayPeriod принадлежит учетной записи, я бы сказал, что создание последних четырех PayPeriods принадлежит after_create хуку на рассматриваемой учетной записи.В дальнейшем я думаю, что лучшей практикой будет создание новых PayPeriods по мере необходимости;то есть первый раз, когда я добавляю заметки или транзакцию к PayPeriod, вероятно, когда он должен быть создан.

Если по какой-либо причине у вас есть системная политика, которая позволяет пользователям редактировать определенное окно PayPeriods (например, вы можете редактировать этот и следующий календарный год), то вы можете настроить Rakeзадание и подключите его к заданию Cron, которое запускает его, однако часто его нужно запускать (например, если вы ограничиваете свое окно календарным годом, то вы можете настроить задание Cron на выполнение каждого 1 января в 12:01.это создает год PayPeriods).

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