выполнить некоторую логику перед загрузкой объекта из базы данных - PullRequest
1 голос
/ 07 февраля 2011

Ситуация:

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

Итак, у меня есть представление в разных штатах.«Черновик», «в очереди», «проверено» и т. Д. Большинство переключений в эти различные состояния инициируются каким-либо действием, например, отправка ставится в очередь, когда редактор ее планирует.Легко, пизи.Однако переход в состояние «проверено» не инициируется каким-либо действием, он просто происходит после того, как прошло определенное время.

У меня есть две мысли о том, как этого добиться:

  1. Запустите ежедневное / почасовое задание cron, чтобы проверить все отправленные в очередь заявки и переключить их на просмотренные, если это необходимо.Мне это не нравится, потому что
    1. Я бы предпочел, чтобы это было ежечасно, чтобы я мог редактировать свое представление не позднее, чем за три часа до начала собрания
    2. Почасовые хронологические задания на Heroku стоят денеглибо никогда не будет зарабатывать деньги, либо не будет зарабатывать деньги в течение нескольких месяцев и месяцев
  2. Каким-то образом создаст обратный вызов before_load ActiveRecord, который будет выполнять некоторую логику для представлений при каждой их загрузке,«В очереди? Нет? Не имеет значения. В противном случае переключите его на« Отзыв », если до его собрания менее трех часов».

Я хотел бы узнать мнение людей по второй идее.

  1. Это ужасно вонючий способ сделать это?
  2. Если да, можете ли вы предложить удивительный третий способ?
  3. Если «нет» обоимвыше, можете ли вы дать советы о том, как выполнять такую ​​логику каждый раз, когда запись загружается из базы данных?Мне нужно всегда выполнять некоторую логику, прежде чем делать select из таблицы submissions (которая готовится стать самой запрашиваемой таблицей в приложении ...)

Если естьнет хорошего способа выполнить второй вариант (или, я надеюсь! третий вариант), я прибегну к варианту один с ежедневной работой cron.Возможность редактирования за день до собрания будет достаточной.

1 Ответ

1 голос
/ 07 февраля 2011

Может быть, с использованием after_find, хотя ваша производительность будет отстойной, то же самое происходит, если вы делаете что-то сумасшедшее, как before_load, производительность отстой, что говорит, что деньги могут быть важнее производительности, если это так, я бы пошел after_find.

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