2010-07-29 6 views
0

J'ai un modèle Rails avec divers attributs et possède de nombreuses relations avec d'autres modèles. Dans la vue, je veux que l'utilisateur puisse entrer/modifier des valeurs qui vont changer les valeurs dans l'objet chargé et renvoyer les résultats calculés à partir de chaque fois qu'ils font une modification. Cependant, je ne veux pas que les valeurs changent dans la base de données tant qu'elles ne sélectionnent pas 'Sauvegarder'. Le problème que je rencontre est que les variables que j'associe aux collections tirent de la base de données après chaque changement. Donc, si j'utiliser quelque chose comme ce qui suit:Rails: Conserve les modifications apportées aux objets/associations en mémoire sans enregistrer dans la base de données

@model.attributes = params[:model] 

elle dure la longueur de cet appel particulier au modèle, mais la prochaine fois que l'utilisateur effectue un changement de la collection est rechargée, perdre toutes les modifications précédentes en dehors de la le plus récent. Je l'ai essayé d'utiliser une variable d'instance, par exemple .:

@costs ||= self.costs 

Mais chaque fois que je lance une opération, il rechargements de la base de données, les modifications précédentes écrasant. Par exemple.

@costs[i].monthly = 10 

Est-il possible d'assurer que les changements persistent dans la session sans enregistrer la base de données? À l'heure actuelle, il semble que ma meilleure option soit de créer un modèle séparé pour stocker les valeurs, puis de les sauvegarder dans l'original lorsque l'utilisateur a terminé.

Répondre

0

En bref, les données ne persiste pas entre les requêtes. À l'époque, j'avais l'impression que les attributs contenaient des valeurs pour la durée de la session. J'ai appris depuis que les seules choses qui persistent sont les valeurs stockées dans la base de données et celles qui sont passées dans les params et les hachages de session.

Questions connexes