Ich frage mich, ob es eine Möglichkeit gibt, Formularobjekte mit Elixir
und Phoenix
Framework zu erstellen? Ich möchte etwas ähnliches implementieren, was reform
gem in Rails
tut, weil ich nicht möchte, dass gleiche Validierungen in jedem Fall ausgeführt werden, führt es zu einem komplizierten Code in meiner Erfahrung. Also könnte ich etwas wie das Folgende erstellen und es irgendwie funktionieren lassen?Formularobjekte mit Elixir und Phoenix Framework
defmodule RegistrationForm do
defstruct email: nil, password: nil, age: nil
import Ecto.Changeset
def changeset(model, params \\ :empty) do
model
|> cast(params, ["email", "password", "age"], ~w())
|> validate_length(:email, min: 5, max: 240)
|> validate_length(:password, min: 8, max: 240)
|> validate_inclusion(:age, 0..130)
end
end
Ihnen sehr danken. Ich hoffe, es wird nicht nur für mich nützlich sein – JustMichael
Kann ich dieses Formular für verschachtelte Modelle verwenden? Wie, wenn E-Mail und Passwort Felder für ein "Benutzer" -Modell sind und Alter ein Feld für ein "Profil" -Modell ist, das zu "Benutzer" gehört (und "Benutzer" hat ein "Profil")? – JustMichael
@JustMichael Das Registrierungsformular ist an kein Modell gebunden. Wenn Sie die Felder für ein bestimmtes Modell herausholen wollen, dann können Sie Folgendes tun: 'struct (Benutzer, Dict.take (changeset, [: email,: password])' – Gazler