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 に答える