【发布时间】:2011-02-06 23:07:01
【问题描述】:
情况:
杂志接受投稿。提交后,编辑将安排您的提交进行审核。审核通过后,您将无法再对其进行编辑。
所以,我在各个州都有提交。 “Draft”、“queued”、“reviewed”等。大多数进入这些不同状态的切换都是由某些操作触发的,例如,当编辑安排提交时,提交进入队列。轻松愉快。但是,切换到“已审核”状态不是由任何操作触发的,它只是在某个日期时间过去后发生。
我对如何做到这一点有两个想法:
- 运行每日/每小时 cron 作业以检查所有排队的提交,并在必要时将其切换为已审核。我不喜欢这个,因为
- 我希望它是每小时一次,这样我可以在会议开始前最多三个小时编辑我的提交
- Heroku 上按小时计费的 cron 作业要花钱,而这个应用程序要么永远不会赚钱,要么在未来几个月都不会赚钱
- 不知何故构造了一个
before_loadActiveRecord 回调,它会在每次加载提交时执行一些逻辑。 “排队?没有?没关系。否则,如果距离会议不到三个小时,则将其切换为‘已审核’。”
我想就第二个想法征求人们的意见。
- 这是一种非常臭的方法吗?
- 如果是这样,你能推荐一个更棒的第三种方法吗?
- 如果以上两项都为“否”,您能否提供有关每次从数据库加载记录时如何执行此类逻辑的提示?在从
submissions表中执行select之前,我需要始终执行一些逻辑(该表正准备成为应用程序中查询最多的表......)
如果没有很好的方法来完成选项二(或者,我希望!选项三),我将使用选项一来完成每日的 cron 工作。能够在会议前一天进行编辑就足够了。
【问题讨论】:
标签: ruby-on-rails activerecord callback cron