代码之家  ›  专栏  ›  技术社区  ›  rshibli

在Rails中创建动态审批系统

  •  0
  • rshibli  · 技术社区  · 11 年前

    我正在尝试如何在Rails中实现动态审批系统。场景是这样的:我有一个模型对象(一个文档),在创建时,用户可以向其分配审批流。用户可以填写并提交文档。然后,文档在被“批准”之前经过批准流程。

    例如,假设我创建了一个“请假请求”文档。作为一个用户,我可以声称休假请求必须得到我的直线经理和人力资源部的人的批准,然后才能进入“已批准”状态。

    我已经探索过使用许多状态机gem和CanCan来获取权限,但我无法理解如何动态创建这些工作流。我曾想过在数据库中序列化工作流,但这意味着每次我想确定等待批准的文档的文档审批者列表时,我都必须反序列化处于“等待批准”状态的文档列表中的每个工作流。

    有人知道如何解决这个问题吗?

    1 回复  |  直到 11 年前
        1
  •  0
  •   chumakoff    11 年前

    我认为最好的解决方案是使用单独的表来存储审批人。在创建文档时,您可以动态创建“审批者”,然后独立于其他人更改每个“审批人”。如果文档没有未经批准的“审批人”,则该文档将被批准。

    class Approver < ActiveRecord::Base
      attr_accessible :approved, role, ...
      # where role is manager or someone from HR or ...
      # approved is a status (true or false)
    
      belongs_to :document
      ...
    end
    
    class Document < ActiveRecord::Base
      has_many :approvers
    
      def approved?
        approvers.where(approved: false).empty?
      end
    
      ....
    end
    
    推荐文章