Rails 状态与时间相关的表设计

jock · 2012年12月12日 · 最后由 hozaka 回复于 2012年12月12日 · 2458 次阅读

我有一个任务表 Task,但是由于任务有开始时间和结束时间

并且活动有自身状态,如草稿、发布、中止

时间相关的状态如 结束 状态,并且此状态应该是自动触发的(活动结束日期到)

对于,这种结束状态,我疑惑的是下面两种设计:

  1. 显式设置一个结束状态呢(用 resque 之类的定时触发),
  2. 干脆不记这个状态,每次判断状态都同时判断状态字段和时间字段呢?

并且,这里还有另外一个问题,我需要用到审批 当保存草稿的时候,可以无限制的保存草稿 当需要发布的时候,需要审批

当已经发布的任务需要更新的时候,也需要审批。问题来了: 对于待审批的任务,需要保存副本,对外显示的任务信息仍旧是老的,直到审批通过才看到更新的任务信息。

对于这种场景,有没有现成的 Gem 可用吗,模型如何设计比较优雅以及更 RESTful

你这是在做工作流么……

  1. 我觉得没必要在数据库上保存这个状态,模型上写好逻辑方法就可以了,剩下是控制的事情
  2. 要保存副本的话,我觉得做成 revision 会好一点,提交发布之后创建一个新的 revision,状态是未审核,审批通过后改下状态就 OK
需要 登录 后方可回复, 如果你还没有账号请 注册新账号