comment passer une variable de session pour modèle dans RoR?
J'ai utilisé une variable globale dans mon application pour la transmission d'informations avant. Mais j'ai un problème et je remercie tout le monde ici m'a proposé de stocker ces données dans la session avec la base de données.
J'ai essayé, mais j'ai constaté que je ne peux pas accéder à la variable de session dans le Modèle. J'ai googlé et savais que c'est le Modèle de comportement normal, RoR ne passera pas la variable de session pour Modèle.
Donc, je voudrais utiliser cette variable de session dans la validation et la également le contrôleur....
- comment passer de la valeur de la
variable de session dans les Modèles? ou - est-il une autre méthode pour mon
cas d'utilisation? J'ai besoin d'une variable de stockage
une valeur, ce qui est requis dans tous les
Les accidents de la route, et devrait être indépendant
entre les différents utilisateurs simultanés.
Merci à tous. 🙂
Salut siulamvictor, Pourriez-vous revenir sur votre question de ce que vous voulez faire. Coz, normalement, vous n'avez pas besoin d'accéder à des sessions à partir d'un modèle, même si vous n'avez alors il pourrait y avoir une autre façon de faire des acclamations, sameera
Salut sameera. C'est un drapeau en fait. J'ai un modèle qui a besoin de travailler avec de nombreux points de vue, mais des vues différentes ont besoin de différentes règles de validation de ce modèle. Je voudrais utiliser une variable pour ce type de contrôle.
Salut sameera. C'est un drapeau en fait. J'ai un modèle qui a besoin de travailler avec de nombreux points de vue, mais des vues différentes ont besoin de différentes règles de validation de ce modèle. Je voudrais utiliser une variable pour ce type de contrôle.
OriginalL'auteur Victor Lam | 2010-06-10
Vous devez vous connecter pour publier un commentaire.
Si je vous comprends bien, une variable de session change la façon dont vous valider le modèle. Je crois que la bonne solution pour cela est la suivante:
Le code n'a pas été testet, mais c'est l'idée. Si l'argument peut être le nom d'une méthode et vous pouvez faire ce que vous voulez là-bas. Vous pouvez avoir différents modes de validation si vous le souhaitez. Par exemple:
Pour plus d'informations, lire le guide de validation.
OriginalL'auteur pupeno
Vous avez besoin de la variable de session dans le cadre de votre modèle, ou tout simplement comme un indicateur pour déterminer ce qui doit être exécuté?
Si l'ancien, vous n'avez pas besoin de savoir d'où vient les paramètres d'origine, il suffit de passer la variable comme un argument pour certains l'appellent dans votre méthode. Par exemple:
@user = User.new(params[:user].merge(:some_attribute => session[:some_key])
et il suffit d'ajouter la validation comme d'habitude dans le modèle.
Si vous avez besoin de contrôler un certain débit de l'exécution, comme vous le mentionnez, qui doit être différente pour différents utilisateurs, vous pouvez avoir besoin d'une variable d'instance dans votre contrôleur. Quelque chose comme
Vous pouvez utiliser
session[:some_key]
directement dans votre point de vue, mais c'est mieux de le mettre dans une variable d'instance à la place.OriginalL'auteur Chubas
Meilleure façon de le faire est de Créer une méthode avec un paramètre et passer
session as an argument
.Bof exemple
de contrôleur de
OriginalL'auteur Salil
Modèles sont d'une interface pour la base de données. Ils peuvent être utilisés sans une session (par exemple à partir de la CISR). Ce serait une violation de la MVC pour permettre les modèles de parler à la session. Pouvez-vous développez votre question avec un peu plus d'infos à propos de ce que vous essayez de faire? Il est le plus probablement une meilleure façon de le faire.
OriginalL'auteur zaius