Chcę ustawić wartości domyślne dla modelu w Phoenix Framework próbowałem:feniks ramy jak ustawić wartości domyślne w modelu ekto
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
Jak ustawić wartości domyślne w modelu tak, że pojawia się, gdy new.html jest renderowany?
BTW, oto moja domyślna funkcja zestawu zmian. Nie mogłem wymyślić, jak z niego korzystać? Zakładam użycie Ecto.changeset.put_change w potoku po obsadzie?
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
słodki, dzięki! Czy uważasz, że byłoby lepiej w funkcji zestawu zmian (tj. W modelu zamiast kontrolera)? Może to byłby lepszy sposób? –
To zależy od przypadku użycia. Jeśli chcesz ustawić wartości domyślne podczas prezentacji użytkownika w nowym formularzu, skorzystam z pierwszej opcji, którą zasugerowałem. Jeśli używasz tego w kilku miejscach, masz niestandardową funkcję zmiany. Jeśli chcesz go za każdym razem, gdy tworzony jest nowy model tego typu, użyj bazy danych dla wartości domyślnych. – Gazler
niesamowite, użyłem domyślnych wartości bazy danych, tego chciałem cały czas, ale nie wiedziałem, że istnieje :-) –