Au contraire, tu as raison. J'ajouterai même dans le ApplicationController :

helper_method :user

def user
  @user ||= User.find(session[:user])
end

def user= id
  @user = User.find(session[:user] = id)
end

Comme ça pas besoin de répéter des session[:user] et des User.find, on sait
où stocker l'id user, on sait où chercher l'user en cours, les vues n'ont
pas besoin de faire leurs find elles-même (pas bô) et quand on change l'id
on change l'user qui va avec.

Michel Belleville


2009/8/31 Jean-Baptiste Barth <[email protected]>

> On m'a toujours dit de me méfier des modèles ActiveRecord en session, voir
> : http://railscasts.com/episodes/13-dangers-of-model-in-session
>
> A priori il vaut mieux stocker l'ID :
> session[:user] = @user.id
> Et en cas de besoin, récupérer l'object (modulo les tests qui vont bien) :
> @user = User.find(session[:user])
> Ensuite ne manipuler que @user, ce qui aurait sans doute évité le problème
> que tu as rencontré.
>
> Si je fais fausse route, n'hésitez pas à me corriger.
>
> Cdt,
> --
> Jean-Baptiste
>
> Le 30 août 2009 23:34, alternative451 <[email protected]> a écrit :
>
>
>> OoOoo joie !
>> et bien vous saviez vous que les attributs d'un objet de session ne se
>> modifient pas avec une simple opération d'égalité ?
>> dans ma configuration actuelle
>> session[:unObjet].unAttribut =  'une modification' ne prend pas effet
>> hors de la méthode. comme si on reste en passage en copie au lieu
>> d'une référence.
>> par contre
>> session[:unObjet].update_attribute(:unAttribut =>  'une
>> modification' ) prends effet
>> c'est beau de découvrir un langage.
>> désolé du dérangement. mais peut être cela peut être utile à certains
>>
>>
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
[email protected]
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
[email protected]
-~----------~----~----~----~------~----~------~--~---

Répondre à