1

Я борюсь за то, как смоделировать ресурс и его доступность с помощью инструментов, драгоценных камней или плагинов, доступных нам в Rails.Моделирование доступности ресурсов с течением времени с исключениями в Rails

В основном каждый ресурс будет иметь типичную доступность 0,24 часа на каждый день (0,1,2,3,4,5,6) недели. НО тогда будут исключения, которые необходимо учитывать, например, праздник или специальное событие, которое должно отменять дефолт в этот день недели.

Я могу думать о двух широких подходах (хотя я уверен, что их больше). Один из них будет запрашивать БД по каждому запросу и проверять логику, чтобы узнать, доступен ли ресурс в этот момент. Это может стать громоздким (трудоемким) по мере роста системы. Другой будет запускать процесс (cron?) Каждые x (5?) Мин, чтобы установить логическое (AVAILABLE) на каждый ресурс, который получен в зависимости от правил его доступности.

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

Любые мысли? Опыт? Драгоценные камни/плагины, о которых я должен знать?

ответ

1

Не уверен в применимости в вашем приложении, но есть довольно красивый драгоценный камень Ruby под названием ice_cube, который может использоваться для моделирования повторяющихся дат и времени. Вы можете настроить расписание для своих ресурсов, определяя их правила доступности и исключения. Расписание может быть сериализовано в базе данных как YAML (скажем, в текстовом поле) для каждого ресурса.

Если вам нужно посмотреть, доступен ли какой-либо конкретный ресурс, вы просто потянете его расписанием, сериализируя его и спросите ice_cube, если рассматриваемая дата/время пересекается с его правилами или нет. Это очень быстро и эффективно.

+1

Возможно, вы знаете, как легко/быстро, используя ice_cube, я мог бы найти тысячи записей, чтобы найти несколько доступных «в данный момент» в данный момент? – Meltemi