0

我试图弄清楚如何在 Rails 中实现动态审批系统。场景是这样的:我有一个模型对象(一个文档),当创建它时,用户可以分配一个批准流。该文件可以由用户填写和提交。然后,该文档在“批准”之前经过批准流程。

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

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

有没有人对如何解决这个问题有任何想法?

4

1 回答 1

0

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

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
于 2014-02-11T08:18:33.843 回答