Standard Datetime mit Ecto & Elixir

7

Ich habe gerade angefangen, Elixir & amp; Phoenix heute, ich versuche, Ecto als Mapper hinzuzufügen, aber ich habe einige Probleme mit der Zeit.

Das ist mein Modell.

%Vor%

Ich versuche, created_at und updated_at standardmäßig zu setzen, aber wenn ich versuche, das zu kompilieren, bekomme ich den folgenden Fehler.

%Vor%

Es gibt nicht viel Hilfe, um in die Dokumentation zu gelangen, was wäre der richtige Weg dafür?

    
MartinElvar 13.02.2015, 18:48
quelle

3 Antworten

12

:datetime ist der native Postgres-Datentyp für, also eine Datetime; Dieser Datentyp wird einem Elixir-Tupel mit zwei Elementen zugeordnet ( {{yy, mm, dd}, {hh, mm, ss}} ). Ein %Ecto.DateTime{} struct ist kein Tupel mit zwei Elementen, daher der Kompilierungsfehler.

Vielleicht möchten Sie den Typ Ihrer Felder auf Ecto.DateTime setzen, alles sollte nahtlos funktionieren.

Hier ist die relevante Dokumentation über primitive Typen und nicht-primitive Typen.

PS Sie können sich auch Ecto.Schema.timestamps/1 , was ein Makro ist, das sich auf das erweitert, was Sie manuell geschrieben haben (fügt die Felder created_at und updated_at hinzu und lässt Sie wählen, welcher Typ sie sein soll, standardmäßig Ecto.DateTime ):

%Vor%     
whatyouhide 13.02.2015, 19:58
quelle
14

Die Namen der Standardfelder lauten :inserted_at und :updated_at . Sie können jedoch mit Ihren eigenen Feldnamen verschmelzen und eine Schlüsselwortliste übergeben

%Vor%     
misaelpc 10.03.2015 01:14
quelle
2

Sie könnten auch in Erwägung ziehen, den Standardwert nicht im Schema, sondern in der Migration zu haben: "created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP"

    
Kadjar 20.02.2015 23:48
quelle

Tags und Links