Question

J'essaie de stocker une valeur dans une classe de modèle, par exemple les valeurs de quelques cases à cocher.

J'ai pensé que je pourrais les stocker dans une variable d'instance de classe, cependant, ces valeurs sont effacées lorsqu'un utilisateur clique ailleurs sur l'écran.

Comment puis-je conserver les valeurs de mes variables d'instance de classe.

Par exemple

class Person < ActiveRecord::Base

   def setAge(age)
      @@age = age

   def getAge
      return @@age

cependant, il semble que @@age soit vide après sa définition.

Était-ce utile?

La solution

Le framework Rails recharge les classes dans le development mode.Toutes les valeurs définies dans les requêtes précédentes à la variable de classe sont perdues dans une nouvelle requête.Si vous exécutez votre serveur dans le production mode, votre code fonctionnera.

Ce que vous essayez de faire est une mauvaise pratique car les requêtes simultanées peuvent écraser l'état et lorsque vous générez plusieurs instances de votre serveur rails, cette solution ne fonctionnera pas (comme mentionné par @iltempo)

Si vous essayez de conserver l'état sur deux requêtes client, il est préférable d'utiliser session variables.

demande 1

session[:age] = params['age']

demande 2

u = User.new
u.age = session[:age]

Autres conseils

comme @Nash mentionné, ce n'est pas un code rubis ici.

Toutefois, si vous stockez des données sur niveau de classe, il n'est valable que pour le processus en cours.Cela signifie que si vous exécutez plusieurs processus tels que les données de passagers et d'autres serveurs Web ne seront pas partagés entre ces processus.

aussi l'âge semble être lié à une instance de personne au lieu de la classe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top