# Devise overwrite di alcuni attributi di user session

**URL:** <https://www.ruby-forum.com/t/devise-overwrite-di-alcuni-attributi-di-user-session/223108>\
**Category:** IT\
**Created:** [September 22, 2012, 12:16am UTC](https://www.ruby-forum.com/t/devise-overwrite-di-alcuni-attributi-di-user-session/223108 "2012-09-22T00:16:11Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![aris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@aris](https://www.ruby-forum.com/u/aris)\
**Post date:** [September 22, 2012, 12:16am UTC](https://www.ruby-forum.com/t/devise-overwrite-di-alcuni-attributi-di-user-session/223108/1 "2012-09-22T00:16:11Z")

</div>

Mi spiego.  
Uso devise\_ldap per l’autenticazione.  
Nel modello user ho implementato il metodo:

def name  
“#{first\_name} #{last\_name}”  
end

L’utente guest nel db ha guest guest come first\_name e last\_name,  
quindi current\_user.name mi darebbe guest guest.  
Vorrei che l’utente guest dopo essersi loggato inserisse il suo nome e  
cognome attraverso un form e vorrei fare in modo che da quel momento  
in poi per tutta l’applicazione current\_user.name avesse i dati  
inseriti attraverso il form.  
Ora per fare il redirect ad un form per inserire nome e cognome ho  
fatto l’override del metodo after\_sign\_in\_path\_for:

def after\_sign\_in\_path\_for(resource)  
if current\_user.uid == “ospite”  
login\_guest\_user\_path(resource)  
else  
super  
end  
end

L’utente guest inserisce nel form presentato dalla pagina  
login\_guest\_user\_path i propri dati ma a questo punto non so come  
modificare la sessione del current\_user in modo che il suo metodo name  
mi possa restituire il nome e cognome inseriti.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [September 22, 2012, 4:04pm UTC](https://www.ruby-forum.com/t/devise-overwrite-di-alcuni-attributi-di-user-session/223108/2 "2012-09-22T16:04:55Z")

</div>

2012/9/22 Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Vorrei che l’utente guest dopo essersi loggato inserisse il suo nome e  
> super  
> end  
> end
> 
> L’utente guest inserisce nel form presentato dalla pagina  
> login\_guest\_user\_path i propri dati ma a questo punto non so come  
> modificare la sessione del current\_user in modo che il suo metodo name  
> mi possa restituire il nome e cognome inseriti.

Nessuna idea?

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [September 22, 2012, 10:17pm UTC](https://www.ruby-forum.com/t/devise-overwrite-di-alcuni-attributi-di-user-session/223108/3 "2012-09-22T22:17:05Z")

</div>

Ogni guest ha un record personale?

## Maurizio

My profile [https://plus.google.com/100973969013103507046/about](https://plus.google.com/100973969013103507046/about)

2012/9/22 Mauro [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [September 23, 2012, 11:20am UTC](https://www.ruby-forum.com/t/devise-overwrite-di-alcuni-attributi-di-user-session/223108/4 "2012-09-23T11:20:53Z")

</div>

current\_user ritorna l’utente loggato (e di norma usa la memoization).  
Quindi, dopo il login di guest, dovresti usare un nuovo utente ad-hoc,  
oppure:

1. imposti il nuovo nome in sessione
2. fai override di current\_user per far tornare il nome dalla sessione

IMHO, questa cosa suona di porcata olimpica, per si pu fare

Il giorno domenica 23 settembre 2012, Mauro ha scritto:

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [September 23, 2012, 11:58am UTC](https://www.ruby-forum.com/t/devise-overwrite-di-alcuni-attributi-di-user-session/223108/5 "2012-09-23T11:58:53Z")

</div>

2012/9/23 Andrea P. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> current\_user ritorna l’utente loggato (e di norma usa la memoization).  
> Quindi, dopo il login di guest, dovresti usare un nuovo utente ad-hoc,  
> oppure:
> 
> 1. imposti il nuovo nome in sessione

E’ quello che voglio fare.  
Siccome mi appoggio ad una applicazione che chiede current\_user.name  
non posso far altro che trovare un modo per poter cambiare cio’ che  
current\_user.name mi restituisce.  
Ci sara’ pure una sessione di current\_user dove poter intervenire.

---

<div class="post-metadata">

**Author:** ![msan](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/3ab097/32.png) [@msan](https://www.ruby-forum.com/u/msan)\
**Post date:** [September 23, 2012, 1:06am UTC](https://www.ruby-forum.com/t/devise-overwrite-di-alcuni-attributi-di-user-session/223108/6 "2012-09-23T01:06:29Z")

</div>

2012/9/22 maurizio de magnis [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Ogni guest ha un record personale?

No ha solo un record nel db con first\_name e last\_name “guest” guest".  
current\_user.name percio’ mi restituisce guest guest.  
Ecco perche’ dopo che il guest si e’ loggato con successo, chiedo,  
tramite form, di inserire nome e cognome e vorrei far si che per tutta  
l’applicazione current\_user.name mi restituisca il nome e cognome  
inseriti nel form.  
Immagino di dover intervenire nella session di user ma non riesco a  
capire come.
