パーミッション述語を提案するのに適切な場所は?

学んだこと/推測したことは以下の通りです。

  • Guardian はまさに 「ユーザーは何を許可されているか?」 をカプセル化するものです。(Guardian インスタンスは User インスタンスも保持します。)
  • したがって、権限述語の適切な場所は、単に Guardian のメソッド(lib/guardian.rb)にあります。
    • メソッドが「ユーザーは Xxxx オブジェクトに対して Z を実行できますか?」というものである場合、それはおそらく XxxxGuardian ミキシンファイル(lib/guardian/...)のいずれかに属します。
    • それ以外の場合は、基本の Guardian 定義に入ります。
  • ApplicationController は現在のリクエスト/クライアントを反映する guardian 属性を管理し、シリアライザーにスコープとして提供するため、必要に応じて現在の Guardian が利用可能になります(利用できない場合を除く[1])。
  • Guardian がすぐに利用できない場所があります。通常はシステムによって実行されるバックエンドタスクですが、「アクティブなユーザー」(例:メール通知の生成時に受信者ユーザー)のハンドルがあれば、適切なガーディアンをその場で作成できます: Guardian.new(the_user)

  1. ↩︎