我试图弄清楚如何在Rails中实现动态审批系统。场景是这样的:我有一个模型对象(一个文档),当创建它时,用户可以给它分配一个批准流。文档可以由用户填写和提交。然后,文档经过审批流程,然后才被“批准”。
例如,假设我创建了一个“离开请求”文档。作为用户,我可以声称休假请求必须得到我的直线经理和人力资源部人员的批准,然后才能进入“批准”状态。
我已经探索过使用许多状态机gems和CanCan作为权限,但我无法思考如何动态创建这些工作流。我考虑过序列化数据库中的工作流,但这意味着每当我想确定等待批准的文档审批者列表时,我都必须反序列化处于“等待批准”状态的文档列表中的每个工作流。
有没有人对如何解决这个问题有任何想法?
发布于 2014-02-11 08:18:33
我认为最好的解决方案是使用单独的表存储审批人。您可以在创建文档时动态创建“审批人”,然后根据其他文档更改每个“审批人”。如果文档没有未经批准的“审批人”,则该文档被批准。
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
....
endhttps://stackoverflow.com/questions/21695537
复制相似问题