2009-07-21 11 views
0

J'ai ajouté une variable "compte" à une application Rails que j'exécute et j'ai testé dans l'environnement de développement avec un serveur mongrel. Tout a bien fonctionné. J'ai mis mon environnement en production et utilisé notre serveur Apache, et tout à coup rien ne fonctionne. Après beaucoup de débogage, j'ai trouvé que la variable de compte réussit à être SET dans mes méthodes, mais ce n'est pas SAVING (c'est-à-dire, une fois qu'elle est sortie de la méthode qui la définit, elle est nulle). Je peux appeler enregistrer ou enregistrer! autant de fois que je veux, et ce n'est toujours pas réglé.Pourquoi l'attribut n'est pas enregistré dans Rails?

L'attribut est accessible, et je ne vois aucune erreur dans les journaux ... Ce n'est tout simplement pas en cours d'enregistrement.

Une idée de ce qui se passe?

-Jenny

Répondre

0

Un peu plus d'informations pour vous aider pourquoi cela est arrivé:

Vérifiez le fichier db/schema.rb - il contient une représentation Ruby de votre base de données, mise à jour à chaque migration. Les modèles dans Rails basent leurs attributs sur ce fichier. Par conséquent, lorsque vous migrez en mode développement, le fichier de schéma est mis à jour. Lorsque vous passez en mode production, ce fichier est conservé et Rails ne sait pas que les colonnes que vous essayez d'affecter n'existent pas. En tant que tel, l'objet que vous mettez à jour accepte l'attribution d'attribut, envoie la requête et continue - sans remarquer que l'attribut n'a pas vraiment été sauvegardé.

C'est ce que je comprends - j'espère que cela vous aidera dans votre quête!

2

Ah, je migré vers dev, mais pas la production. Je ne pensais pas que ça pourrait être les migrations, parce que si c'était le cas, je n'aurais pas pu accéder à @ video.account, ou quoi que ce soit, parce que j'obtiendrais une erreur "méthode n'existe pas" (qui est ce que je recevais avant de migrer en dev).

Questions connexes