Wie legen Sie einen Zeitstempel in rails Datenbank-Spalte
Ich habe gerade angefangen, mit RoR und habe eine Frage: Wie kann ich die einfügen den aktuellen timestamp (oder jede Art von Zeit) in das Modell? Unten sehen Sie die log-Funktion erstellen.
def create
@log = Log.new(params[:log])
respond_to do |format|
if @log.save
format.html { redirect_to @log, notice: 'Log was successfully created.' }
format.json { render json: @log, status: :created, location: @log }
else
format.html { render action: "new" }
format.json { render json: @log.errors, status: :unprocessable_entity }
end
end
end
Hast du das Modell mit den rails-generator?
InformationsquelleAutor zyrup | 2013-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Rails model-generator erstellt automatisch
created_at
undupdated_at
datetime
Felder in der Datenbank für Sie. Diese Felder werden automatisch aktualisiert, wenn ein Datensatz erstellt oder aktualisiert wird bzw. ist.Wenn Sie möchten, erstellen Sie manuell einen timestamp, fügen Sie eine datetime-Spalte ist (z.B.
timestamp_field
) an der Datenbank und verwenden Sie einebefore_save
Rückruf in Ihrem Modell.Ich aktualisierte die Antwort mit einem Beispiel einer manuellen Zeitstempel.
Braucht man da nicht zu schreiben
self.timestamp_field = DateTime.now
?Ich glaube, so, wie
timestamp_field
ist derzeit definiert als eine lokale variable und soweit ich weiß, ActiveRecord nicht davon ausgehen, nichts über Variablen-Namen, die mit class-Attributen. Also, man müsste Vorwort mitself
wie Sie vorgeschlagen haben, oder machen Sie es eine Instanz-variable von Vorwort mit@
. Dann wieder, ich nie begegnet bin, dieses Szenario, nur spekulieren.InformationsquelleAutor Richard Brown
Verwendung der rails-generator-e aus.g
rails generate model Log
Schienen erstellt zwei timestamp-Felder automatisch für Sie.created_at
undupdated_at
diese beiden Felder werden gefüllt durch Schienen, wenn Sie einen neuen Datensatz erstellen, tunLog.new
dannsave
auf, dass der Datensatz oderLog.create
Dieupdated_at
Feld wird nur aktualisiert, wenn Sie den Datensatz aktualisieren der Attribute, oder wenn Sie verwenden die Methodetouch
auf eine Instanz des Modells.Nun, wenn Sie wollte erstellen Sie ein weiteres Feld mit dem Typ timestamp könnten Sie eine migration, die fügt eine Spalte hinzu, um Ihr Modell wie dieses
Dies erzeugt eine migration, fügen Sie eine Spalte mit dem Namen
my_timestamp_field
mit einemtimestamp
Art, wie diecreated_at
undupdated_at
InformationsquelleAutor Leo Correa