Ruby on rails speichern Sie ein bestimmtes Feld in der Datenbank
Ich habe eine Tabelle in meiner Datenbank, die Haus, mit vielen Feld, wie "Farbe", "Preis". Wie kann ich speichern nur in einem bestimmten Feld nach dem Update
wenn ich diese habe,
@Haus.Farbe = newcolour
@Haus.speichern
wird es retten Sie alle anderen Feld, einschließlich der Haus.Farbe und Haus.Preis
(mein Fall, Preis sollte programmgesteuert aktualisiert zur gleichen Zeit mit der Farbe, aber nicht gespeichert werden sollen. nur Haus.die Farbe sollte in der Datenbank gespeichert)
habe ich versucht zu tun
@Haus.Farbe = newcolour
@Haus.Farbe.speichern
aber es zeigt mir Fehler
Ist es möglich nur zu sparen, lediglich den Wert der @Haus.Farbe ?
Danke für jede Anregung
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aktualisieren können Sie eine genaue Menge von Feldern mit update_attributes.
Können Sie aktualisieren Sie ein einzelnes Feld mit update_attribute.
Gibt es ein paar Möglichkeiten zum aktualisieren spezifischer Felder, die von einem persistenten Objekt.
update(Attribute)
update!(Attribute)
update_attribute(name, value)
update_attributes(Attribute)
update_attributes!(Attribute)
update_column(name, value)
update_columns(Attribute)
update
undupdate!
(und daherupdate_attributes
undupdate_attributes!
) - Aufrufsave
. So in Ihrer situation, sollten Sie versuchen, mitupdate_column
oderupdate_columns
.Die Antwort von DanSingerman zeigt, wie update ein einzelnes Feld.
Aber, wenn der Preis ist ein rein rechnerischer Wert, es sollte nicht sein, ein Feld in Ihrer Tabelle. Aber eine Methode im Modell:
(Dies ist natürlich eine sehr einfache Methode, um zu "berechnen" einen Preis)
Nun können Sie
@house.price
wie vor und es ist abhängig von der Farbe, aber es ist nicht ein Feld einer Tabelle nicht mehr.Hinweis: Wenn die Berechnung Komplex ist, könnten Sie 'cache' in der Klasse variable und überschreiben Sie die
colour=
Methode zum löschen der Klasse variable, wenn sich die Farbe ändert.