In meiner App habe ich eine Beziehung zwischen Shows und Episoden. Shows können viele Episoden haben. Wenn eine Episode zu schaffen Ich bin in der Lage, eine Assoziation zu der Show aufzubauen, indem dies zu tun:Wie man eine zu vielen Assoziationen in Ecto aktualisiert
def create(conn, %{"episode" => episode_params}) do
show = Repo.get!(Show, episode_params["show_id"])
changeset =
show
|> build_assoc(:episodes)
|> Episode.changeset(episode_params)
case Repo.insert(changeset) do
{:ok, _post} ->
conn
|> put_flash(:info, "Episode created successfully.")
|> redirect(to: show_path(conn, :show, show))
{:error, changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
Wie kann ich am besten Update der Folgen Verein zu einer Show? Das habe ich jetzt.
def update(conn, %{"id" => id, "episode" => episode_params}) do
episode = Repo.get!(Episode, id)
changeset = Episode.changeset(episode, episode_params)
case Repo.update(changeset) do
{:ok, episode} ->
conn
|> put_flash(:info, "Episode updated successfully.")
|> redirect(to: episode_path(conn, :show, episode))
{:error, changeset} ->
render(conn, "edit.html", episode: episode, changeset: changeset)
end
end
können Sie nur 'show_id' zu den erlaubten Feldern der' cast' in 'Episode.changeset/2' hinzufügen und lassen Sie den Fremdschlüssel ungültig' show_id' Werte verarbeiten. Gibt es einen Grund, das nicht zu tun? – Dogbert
@Dogbert Du hast recht! Ich lerne immernoch. Vielen Dank. –