# \[RAILS\] ACL e validazioni

**URL:** <https://www.ruby-forum.com/t/rails-acl-e-validazioni/187798>\
**Category:** IT\
**Created:** [April 29, 2010, 11:35am UTC](https://www.ruby-forum.com/t/rails-acl-e-validazioni/187798 "2010-04-29T11:35:44Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![serpico](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@serpico](https://www.ruby-forum.com/u/serpico)\
**Post date:** [April 29, 2010, 11:35am UTC](https://www.ruby-forum.com/t/rails-acl-e-validazioni/187798/1 "2010-04-29T11:35:44Z")

</div>

Salve a tutti,

sto creando un’applicazione rails che necessita un Access Contro List  
per la gestione di utenti assegnati a ruoli.  
Ho di conseguenza un modello User e un modello Role, dove ogni utente ha  
uno (e unico) ruolo assegnato.

Il problema nasce sulle validazioni, in pratica a seconda del ruolo,  
alle creazione e modifica di un utente cambiano i campi obbligatori. Per  
esempio, un utente con ruolo “employee” Ã© obbligato a fornire il suo  
numero di cellulare all’iscrizione, mentre un utente con ruolo “manager”  
non deve farlo.

Qualcuno sa come risolvere la cosa in modo pulito?

P.S: ho pensato anche a un sistema basato su Single Table Inheritance,  
ma non mi Ã© mai piaciuta come soluzione per definirei i ruoli degli  
utenti

---

<div class="post-metadata">

**Author:** ![serpico](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@serpico](https://www.ruby-forum.com/u/serpico)\
**Post date:** [April 29, 2010, 12:07pm UTC](https://www.ruby-forum.com/t/rails-acl-e-validazioni/187798/2 "2010-04-29T12:07:01Z")

</div>

2010/4/29 Serafino P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> numero di cellulare all’iscrizione, mentre un utente con ruolo “manager”  
> non deve farlo.
> 
> Qualcuno sa come risolvere la cosa in modo pulito?

prova a dare un’occhiata qui:  
[http://www.ruby-toolbox.com/categories/rails\_authorization.html](http://www.ruby-toolbox.com/categories/rails_authorization.html)

michele.

---

<div class="post-metadata">

**Author:** ![serpico](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7feea3/32.png) [@serpico](https://www.ruby-forum.com/u/serpico)\
**Post date:** [April 29, 2010, 3:14pm UTC](https://www.ruby-forum.com/t/rails-acl-e-validazioni/187798/3 "2010-04-29T15:14:56Z")

</div>

Visto che mi sono trovato in un caso analogo, ho risolto con qualcosa di  
simile:

> <https://gist.github.com/andreapavoni/383546>

il file ‘role\_play.rb’ lo puoi mettere in lib/ mentre ‘user.rb’ è solo  
un esempio di come usarlo nei model 😉

in pratica, se hai pochi ruoli e non devi gestirli in termini di  
operazioni CRUD, li puoi mettere direttamente nel model usando il metodo  
‘has\_roleplay’ 😛

devi creare anche un campo ‘role\_id’ nella tabella del db usata per gli  
utenti

spero ti possa aiutare 😉

ciao,  
A.
