Sto usando Devise e sono interessato all'utilizzo di Pundit ma non riesco a trovarlo molto se si deve integrare con Rolify o se è indipendente. CanCanCan funziona bene con Rolify e mi piace il modello dei ruoli. Mi manca un motivo importante per cui Pundit e Rolify non sembrano essere usati insieme molto?Perché Pundit non è accoppiato con Rolify come CanCanCan?
risposta
Perché non li usano insieme? Essi possono essere utilizzati facilmente in un modo come questo
class OrganisationPolicy
def initialize(user, organisation)
@user = user
@organisation = organisation
end
def index?
@user.has_role? :admin
end
def show?
@user.has_role?(:admin) || @user.organisation == @organisation
end
end
In realtà, la cosa che rolify
e pundit
non sono accoppiati è qualcosa di bello, e non un fallimento di progettazione;)
Recentemente ho usato Pundit gem con Rails 4 usando devise.Pundit è un sistema autonomo senza dipendenze da Rolify come da esperienza.
Invece di utilizzare Rolify, ho creato la migrazione per aggiungere ruoli nella tabella utente di creazione esistente che consente di assegnare ruoli agli utenti e verificare quali ruoli hanno.
prega di dare un'occhiata al schema che ho creato per il mio progetto:
create_table "users", force: true do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer "sign_in_count", default: 0, null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
**t.boolean "is_admin"
t.boolean "is_daily_user"
Dove si aggiunge is_admin
e is_daily_user
campo per ruoli utente.
Spero che questo aiuti!
Funzionerà, ma non è scalabile. Immagina di voler aggiungere un utente is_premium. Dovresti cambiare il tuo modello di DB. Crea invece il tuo modello UserRole (: id,: role_name) che appartiene_per utente dove puoi creare tutti i nomi di ruolo che vuoi per utente ... Sono andato con Rolify gem, però;) – luigi7up
- 1. Rails 4 - Pundit con Rolify - permettendole di un gruppo di ruoli
- 2. Utilizzando Devise/Cancan/Rolify insieme
- 3. Implementazione di ambiti in Pundit
- 4. Come testare le politiche di Pundit con Minitest?
- 5. Autorizzazione di un array di ID con la gemma Pundit
- 6. Trova tutti gli utenti con ruolo specifico utilizzando rolify
- 7. Autorizzazione Pundit sulla pagina personalizzata activeadmin
- 8. Qual è la vera ragione per il codice di errore WatchKit2 7007 "La sessione sul dispositivo accoppiato non è raggiungibile"
- 9. Rails Aggiungere il ruolo di rolify tramite il modulo utente
- 10. Rails 4 con Pundit & Statesman gioiello - politica quando un oggetto è in uno stato
- 11. Perché Cache.asMap() non è coerente con Cache.size()?
- 12. Ruby on Rails L'utente corrente di Pundit è nullo nel test di integrazione
- 13. Come rimuovere automaticamente gli input del modulo Active Admin con gli attributi consentiti da Pundit?
- 14. Perché colspan non è applicato come previsto
- 15. In Python argparse, è possibile avere accoppiato --no-qualcosa/- qualcosa argomenti?
- 16. Perché `$ @` non è affidabile?
- 17. Perché HttpUtility.UrlPathEncode è contrassegnato come "non utilizzare"?
- 18. Come scoprire perché renameTo() non è riuscito?
- 19. Perché OODBMS non è diffuso come RDBMS?
- 20. Parametri generici (quasi) auto-descrittivi in C++ accoppiato con una GUI?
- 21. Perché UtteranceProgressListener non è un'interfaccia?
- 22. Perché Java.Lang.Math non è astratto?
- 23. Perché strncpy non è nullo?
- 24. Perché Channel.waitForConfirmsOrDie non è bloccato?
- 25. Perché getch non è portatile?
- 26. Perché java.io.Bits non è pubblico?
- 27. Perché AudioManager.isStreamMuted non è disponibile?
- 28. Perché NULL non è dichiarato?
- 29. perché concurrent_queue non è bloccante?
- 30. Perché volatile non è abbastanza?
Pundit funzionerà bene con Rolify o qualsiasi altro sistema di ruolo. – sevenseacat
@sevenseacat anche questa è una risposta corretta – MicFin