voglio impostare valori di default per un modello a Phoenix quadro, ho provato:quadro phoenix come impostare i valori di default nel modello Ecto
def new(conn, _params) do
user = get_session(conn, :user)
if is_nil user do
user = Repo.get_by(User, name: "guest")
conn = put_session(conn, :user, user)
end
changeset = Module.changeset(%Module{})
changeset
|> Ecto.Changeset.put_change(:user, user)
|> Ecto.Changeset.put_change(:version, "0.0.0")
|> Ecto.Changeset.put_change(:visibility, "public")
render(conn, "new.html", user: user, changeset: changeset)
end
Come faccio a impostare valori di default nel modello in modo che appaiano quando new.html è reso?
BTW, ecco la mia funzione di changeset predefinita. Non riuscivo a capire come usarlo? Suppongo di utilizzare un Ecto.changeset.put_change nella pipeline dopo il cast?
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
dolce, grazie! Pensi che sarebbe meglio nella funzione changeset (cioè nel modello invece del controller)? Forse questo sarebbe il modo migliore? –
Dipende dal caso d'uso. Se si desidera impostare i valori predefiniti solo quando si presenta l'utente con il nuovo modulo, sceglierei la prima opzione suggerita. Se stai usando questo in più punti, allora hai una funzione personalizzata di changeset. Se lo si desidera ogni volta che viene creato un nuovo modello di questo tipo, utilizzare il database per i valori predefiniti. – Gazler
fantastico, ho usato i valori di default del database, questo è quello che volevo da sempre, ma non sapevo esistesse :-) –