Forum: Rails France Supprimer variables et variables de session

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Pylos M. (Guest)
on 2007-03-29 18:59
Bonjour,

Comment supprimer une variable de session?

Merci de votre aide.


MaitrePylos
Guillaume B. (Guest)
on 2007-03-29 19:04
(Received via mailing list)
> Comment supprimer une variable de session?

il me semble que en fait on lui assigne la valeur nil :

session[:variable] = nil

gUI
Pylos M. (Guest)
on 2007-03-30 10:50
Guillaume B. wrote:
>> Comment supprimer une variable de session?
>
> il me semble que en fait on lui assigne la valeur nil :
>
> session[:variable] = nil
>
> gUI

Ok, c'est comme ça que j'essaye dans mon projet, mais à un moment je
dois vérifier si cette variable existe ou non.

je voudrais savoir si le fait de lui assigner "Nil" detruit la variable,
ou comme elle est initialiser à "False", elle existe toujours?

merci de votre aide.
Guillaume "Zifro" DESRAT (Guest)
on 2007-03-30 16:30
(Received via mailing list)
Etant donné qu'avec Ruby tu n'as pas de création de variable comme tu
pourrais en avoir en Pascal par exemple, toutes tes variables
existent.

En la mettant à "nil", tu spécifies qu'elle n'est pas définie.

Pour savoir si ta variable est définie ou pas, utilise la méthode
"defined?", qui te renverra vrai si elle ne contient pas "nil".



--
Guillaume DESRAT / Zifro AKA guillaumed
Secrétaire de l'association Ruby France
http://www.rubyfrance.org/
Pylos M. (Guest)
on 2007-03-30 18:08
Merci :)
Alexis B. (Guest)
on 2007-03-30 20:33
(Received via mailing list)
Je n'ai pas vérifié, cependant je ne dois pas prendre bcp de risque à
dire que session est basé sur Hash. Donc il suffit de jeter un coups
d'oeil sur la doc.

Mettre à nil ne supprimera pas l'entrée. Je te conseille d'utiliser
delete sinon ça risque de générer des séances de debug assez intenses.
En effet si plus tard tu teste la présence d'une valeur à partir de la
méthode has_key? voici ce que tu va rencontrer comme problème.

irb(main):001:0> session = {:a => 1, :b => 1}
=> {:a=>1, :b=>1}
irb(main):002:0> session.size
=> 2
irb(main):003:0> session[:a] = nil
=> nil
irb(main):004:0> session.size
=> 2
irb(main):005:0> session.has_key?(:a)
=> true
irb(main):006:0> session.delete(:a)
=> nil
irb(main):007:0> session.size
=> 1
irb(main):008:0> session.has_key?(:a)
=> false

À +

Le 30/03/07, Guillaume Zifro DESRAT<removed_email_address@domain.invalid> a 
écrit :
Pylos M. (Guest)
on 2007-03-30 21:59
Je fais des tests.

Merci de votre aide.

MaitrePylos
Guillaume "Zifro" DESRAT (Guest)
on 2007-03-30 23:54
(Received via mailing list)
Oui, la solution d'Alexis est non seulement plus élégante, mais bien
plus propre.


--
Guillaume DESRAT / Zifro AKA guillaumed
Secrétaire de l'association Ruby France
http://www.rubyfrance.org/
Simon P. (Guest)
on 2007-03-31 00:39
(Received via mailing list)
Attention, session est tout sauf une instance de Hash
 >> app.get "/"
=> 200
 >> app.controller.session.class
=> CGI::Session

Donc toutes les méthodes indiquées par Alexis vont échouer:
 >> app.controller.session.size
NoMethodError: undefined method `size' for #<CGI::Session:0xb714f638>
        from (irb):23
        from :0

La seule méthode reconnue est d'affecter l'entrée à nil. Extrait de
http://api.rubyonrails.com/classes/ActionControlle...
"For removing objects from the session, you can either assign a single
key to nil, like session[:person] = nil, or you can remove the entire
session with reset_session
<http://api.rubyonrails.com/classes/ActionControlle...

Simon
Guillaume "Zifro" DESRAT (Guest)
on 2007-03-31 01:26
(Received via mailing list)
Comme il m'avait embobiné Alexis !

Merci pour nous avoir rappelé à l'ordre, Alexis et moi, avec nos
"conseils".



--
Guillaume DESRAT / Zifro AKA guillaumed
Secrétaire de l'association Ruby France
http://www.rubyfrance.org/
Alexis B. (Guest)
on 2007-03-31 21:30
(Received via mailing list)
C'est pas de chance ça, moi qui pensais que j'avais pas besoin de
vérifier le type, et bien c'est loupé :-)

Le 30/03/07, Guillaume Zifro DESRAT<removed_email_address@domain.invalid> a 
écrit :
This topic is locked and can not be replied to.