2011-01-04 19 views
0

Ich bin ziemlich neu auf Schienen. Ich habe einen Controller, der ein Modell mit dem folgenden Code zu aktualisieren ist versucht:kann nicht aktualisieren Schienen Modell

@test = Product.find(1) 
@test.increment!(:price) 

Es erfolgreich das Produkt aus der Datenbank nicht abrufen, aber nicht den Preis Attribut aktualisieren. Weiß jemand, warum dies der Fall sein könnte, oder wie ich mehr Feedback dazu bekommen könnte, was das Problem ist?

Vielen Dank!
Tristan

edit: Preis ist eine ganze Zahl mit dem Wert 0 ich das gleiche Problem, wenn ich den Preis mit @ test.price gesetzt = 50 und dann @ test.save.

+0

haben Sie Rückrufe auf Produkt ? – Fred

Antwort

1

Ah, ich fand das Problem, das ich war die Büroklammer klammer~~POS=HEADCOMP (Bildanhang) gem verwenden, die eine Validierung kein Updates blockiert hatten Dieses Baby löst es: Smarter paperclip validations

0

increment umgeht Modellvalidierungen, daher ist es möglich, dass die Erhöhung von "price" um 1 das Modell ungültig macht und verhindert, dass es gespeichert wird. Es ist schwer zu sagen, ohne mehr Kontext über das Modell und sein Preisattribut. Sie könnten die Nicht-Knall-Version von increment versuchen, rufen sie manuell speichern, und dann das Modell Objekt untersuchen, um zu sehen, ob es Validierungsfehler waren.

+0

Hallo. ich habe auch versucht die Preis Einstellungen einen anderen Weg und speichern Sie dann anrufen. ich habe für Fehler das Objekt versucht, Überprüfung, Code aus, Ich habe seitdem verloren und konnte keine sehen. Inkrementiere und speichere beides, gebe false für mich zurück, aber wenn ich diese Methoden mit der rails-Konsole ausprobiere, geben sie true zurück. – WoodenKitty

0

Was ist der db Typ des „Preisattribut?

Erhöhungsschritte funktioniert nur auf Nummer basiert Attribute (http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-increment ... 21%)

+0

Preis ist eine ganze Zahl – WoodenKitty