Ruby on Rails - contrôleur d'Accès à la variable de modèle
Je suis en train d'essayer d'accéder à une variable d'instance qui est définie dans le contrôleur dans le modèle. Le contrôleur est le contrôleur des produits et le modèle est le modèle de produits. La variable d'instance est une instance d'un autre modèle appelé compte.
La variable d'instance est @current_account
Lorsque j'exécute le code, rien ne se passe, je ne reçois pas une erreur. Quelqu'un sait-il où je peux trouver quelque chose de lire à propos de l'accès des variables d'instance situé dans le contrôleur à partir du modèle?
Grâce
Eef
- Si vous essayez d'accéder à l' @current_account variable dans un modèle? Le @current_account variable est définie dans le contrôleur?
Vous devez vous connecter pour publier un commentaire.
Vous ne devriez pas généralement essayez d'accéder au contrôleur du modèle pour la haute-esprit les questions je n'entrerai pas dans.
J'ai résolu un problème similaire comme:
Puis il suffit d'accès, le compte courant avec
Account.current
cattr_accessor
etattr_accessor
?self.value
, plutôt qu'une méthodevalue
.AVERTISSEMENT: Le code suivant pauses conventions MVC, cela dit...
À l'aide des attributs de classe peut probablement conduire à enfiler les questions de sécurité. Je voudrais utiliser Thread.courant + around_filter pour stocker contrôleur de données liées au niveau de thread, et de s'assurer qu'il est effacée
juste avant la demande finitions:
Maintenant, le contrôleur instance sera disponible mondialement au cours du traitement de la demande par le biais de Fil.current[:contrôleur]
Si vous besoin pour accéder à un contrôleur de variable à partir d'un modèle, cela signifie que votre conception est mauvaise à cause d'un contrôleur sert de pont entre modèle et de la vue (au moins dans les Rails), le contrôleur reçoit des informations à partir de modèles, les modèles ne sais rien à propos des contrôleurs, mais si vous voulez le faire de toute façon vous pouvez le faire aussi jeem dit, mais je préfère le faire:
au lieu de
vous pouvez voir pourquoi ici => cattr_accessor ne fonctionne pas comme il devrait
Je ne peux pas commenter directement, donc je vais poster ici: accepté la réponse ne semble pas y avoir droit. Comme @étau des notes, des variables de classe sont partagés entre les requêtes. Donc, sauf si il y a juste un compte courant pour l'ensemble de l'application, cela ne se comportent pas comme prévu.
Pour en savoir plus, voir la accepté de répondre par @molf ici: Est des Rails shared-nothing ou peut séparer les demandes d'accès les mêmes variables runtime?
Je ne suis pas sûr si je comprends la question exactement, mais je vais prendre un coup de couteau.
Je pense que si vous avez besoin d'accéder à une instance de contrôleur de la variable dans le modèle, alors vous soit besoin d'en faire un attribut dans le modèle, ou de déplacer votre logique à l'autre classe de contrôleur, pas de modèle.