Posto appropriato per proporre un predicato di permessi?

Ecco cosa ho imparato/dedotto:

  • Guardian è effettivamente ciò che racchiude “Cosa è permesso fare all’utente?” (Un’istanza di Guardian ha anche un’istanza di User.)
  • Pertanto, il posto giusto per un predicato di permessi è semplicemente come metodo su Guardian (lib/guardian.rb).
    • Se il metodo è un “L’utente può fare Z a un oggetto Xxxx?” allora probabilmente appartiene a uno dei file di mixin XxxxGuardian (lib/guardian/...).
    • Altrimenti, va nella definizione di base di Guardian.
  • ApplicationController gestisce un attributo guardian che riflette la richiesta/client corrente e lo fornisce ai serializer come loro scope, quindi il Guardian corrente è disponibile quando necessario (tranne quando non lo è[1])
  • Ci sono posti in cui un Guardian pronto all’uso non è disponibile, tipicamente in un’attività di backend eseguita dal sistema, ma se hai in mano un “utente agente” (ad esempio, l’utente destinatario, quando si genera una notifica via email), puoi creare un guardian appropriato al volo: Guardian.new(the_user).

  1. ↩︎