2011-02-06 2 views
1

Ситуация:выполнить некоторую логику до загрузки объекта из базы данных

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

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

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

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

Я хотел получить информацию от второй идеи.

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

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

ответ

1

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

Смежные вопросы