Rails comment définir une variable temporaire qui n'est pas un champ de base de données
Pour mon application, j'ai différents d'inscription de points d'entrée qui permettent de valider les choses différemment.
Donc, dans la principale de l'inscription, rien n'est obligatoire, sauf pour l'email et le mot de passe de domaine. Dans une autre inscription de terrain, beaucoup plus sont nécessaires. Ainsi, dans le modèle de l'utilisateur, j'ai
validate_presence_of :blah, :lah, :foo, :bah, :if => :flag_detected
def flag_detected
!self.flag.nil?
end
Je veux mettre ce drapeau par le contrôleur. Cependant, cet indicateur n'est pas un champ de base de données. Je me demande simplement si c'est réalisable dans les Rails ou il ya quelque chose de mal avec la façon dont je pense à ce sujet? Si oui, quelle est la meilleure façon d'atteindre cet objectif? Merci.
attr
-- si nécessaire). C'est la question si c'est une "bonne pratique" de le faire dans un Modèle, précisément parce qu'ils sont pas de la persisté modèle. Cependant, dans un Contrôleur, pourquoi pas?J'ai seulement besoin d'être une variable temporaire pour enregistrer appelé à partir du contrôleur. Lorsque j'ai mis @user.flag = true dans le contrôleur, je n'ai pas vraiment le voir dans le modèle.
J'ai donc besoin de définir un attr_accessor? Que faire si j'ai déjà attr_protected, est-il de toute façon autour de qui alors?
vous pouvez toujours écrire votre propre "action" de la méthode et de ne pas utiliser les propriétés:
theModel.flag_for_followup
(par exemple, ou tout ce qui est approprié). Ou, peut-être créer un objet distinct (ou seulement utiliser des variables dans le Contrôleur) et ajoutez pas non persistantes propriétés du modèle..Salut @pst, est-il possible si vous pouvez élaborer un peu? Voulez-vous dire de créer ma propre méthode d'enregistrement afin que je puisse passer cette variable à travers?
OriginalL'auteur gtr32x | 2012-03-14
Vous devez vous connecter pour publier un commentaire.
Ce que vous avez besoin est
attr_accessor
fondamentalement
attr_accessor :flag
créer leuser.flag
etuser.flag = ...
méthodes pour votre modèle.et
attr_accessible
est pour la masse d'affectation de protection.Doh! pas de Rails de 4 easyactiverecord.com/blog/2014/04/01/...
Je trouve qu'il est plus facile d'utiliser une variable de classe @drapeau pour cette question ..
OriginalL'auteur PeterWong
Suivantes sur les meilleures pratiques de débat:
Créer une méthode qui fait ce que vous voulez. I. e. save_with_additional_validation. C'est beaucoup plus clair et l'auto-documentation du code et fonctionne de la même manière. Suffit d'appeler la méthode save()
OriginalL'auteur mmlac
Il semble que vous devez définir la méthode de définition
OriginalL'auteur evfwcqcg