Ecto.Model.Callbacks sind jetzt veraltet.Ecto: Wie Daten in Changeset injiziert werden, ohne Model.Callbacks
Ich versuche, das gleiche Verhalten wie before_insert
zu erreichen, aber ohne Erfolg! Ich kann nicht einmal IO.puts("hello")
in meinem changeset/2
auslösen.
Hier ist, was ich habe:
def changeset(model, params \\ :empty) do
IO.puts "HELLO" # never prints
model
|> cast(params, @required_fields, @optional_fields)
|> put_change(:column_name, "hello")
end
Statt put_change
, ich habe versucht, die Haftung verbessernde change
, cast
und praktisch alles andere innerhalb Ecto.Changeset.
Ich habe versucht, auch die nicht-Rohrverfahren, für alle Fälle:
chset = cast(model, params, @required_fields, @optional_fields)
put_change(chset, :column_name, "hello")
Das Endziel der Reihe der inserted_at
für einen neuen Wert verschiebt, so dass eine einfache default: "hello"
auf dem Schema wird nicht genügen.
Vielen Dank!
Rufen Sie 'YourModel.changeset' explizit von Ihrem Code an? – Dogbert
haben Sie versucht, eine benutzerdefinierte Funktion in der Änderungssatz-Pipeline hinzuzufügen, die einen Änderungssatz zurückgibt, auf den Ihre Änderungen angewendet wurden – coderVishal