2009-07-21 12 views
0

Ich habe eine "Account" -Variable zu einer Rails-App hinzugefügt, die ich ausführe und in der Entwicklungsumgebung mit einem Mongrel-Server getestet habe. Alles hat gut funktioniert. Ich setze meine Umgebung auf die Produktion und nutze unseren Apache-Server, und plötzlich funktioniert nichts mehr. Nach einer Menge Debugging habe ich festgestellt, dass die account-Variable erfolgreich in meinen Methoden SET ist, aber es spart nicht (das heißt, sobald es aus der Methode, die es setzt, ist es Null). Ich kann speichern oder speichern! so oft wie ich will, und es ist immer noch nicht festgelegt.Warum wird das Attribut nicht in Rails gespeichert?

Das Attribut ist zugänglich, und ich sehe keine Fehler in den Protokollen ... Es ist nur nicht speichern.

Irgendeine Idee was ist los?

-Jenny

Antwort

0

Ein bisschen mehr Informationen um Ihnen zu helfen, warum das passiert ist:

Schauen Sie sich die Datei db/schema.rb - es enthält eine Ruby-Darstellung Ihrer Datenbank, auf jeder Migration aktualisiert. Modelle in Rails basieren ihre Attribute auf dieser Datei.

Wenn Sie also im Entwicklungsmodus migrieren, wird die Schemadatei aktualisiert. Wenn Sie in den Produktionsmodus wechseln, wird diese Datei beibehalten, und Rails weiß nicht, dass die Spalten, die Sie zuweisen möchten, nicht vorhanden sind. Daher akzeptiert das Objekt, das Sie aktualisieren, die Attributzuweisung, sendet die Abfrage und fährt fort - ohne zu bemerken, dass das Attribut nicht wirklich gespeichert wurde.

Das ist mein Verständnis davon - hoffe das hilft dir bei deiner Suche!

2

Ah, wanderte ich dev, aber nicht die Produktion. Ich dachte nicht, dass es die Migrationen sein könnten, denn wenn es so wäre, würde ich nicht in der Lage sein, auf @ video.account oder was auch immer zuzugreifen, weil ich einen Fehler "Methode nicht existiert" bekommen würde (was ist was ich bekommen habe bevor ich in dev migriert bin).

Verwandte Themen