ステート マシン パターンを使用する Ruby アプリがあります。ユーザーは申請書を提出し、承認され精査されると、それらの申請書は他のユーザーに表示されます。
また、このアプリは ActiveAdmin を使用して、管理者がアプリケーションを「下書き」状態から「承認済み」状態に移行し、最終的に「公開に成功」状態または「廃止」状態に移行できるようにします。
私の問題は、すべての状態でアクションを実行する特別な権限を管理者に与える方法がわからないことです。たとえば、アプリケーションが承認されると、ユーザーはアプリケーションを編集できなくても、管理者はどの状態でもアプリケーションを編集できるようにしたいと考えています。デフォルトでfalseの「編集可能な」メソッドがありますが、ユーザーがアプリケーションを編集できるようにする場合は、時々trueに設定します。
def editable?
true
end
「admin_editable?」と呼ばれる同様のメソッドを作成することを考えました。すべての状態で true に設定します。しかし、それはハックのようです。
ベストプラクティスはありますか? ステートマシンをまとめて破棄する必要がありますか? または、状態に関係なく管理者がプロジェクトを編集できるようにするにはどうすればよいですか?