defmodule App.Membership do # ... def changeset(struct, params \\ %{}) do struct # ... |> put_role |> cast_assoc(:user, required: true) end defp put_role(changeset) do case changeset do %Ecto.Changeset{valid?: true} -> put_change(changeset, :role, :admin) _ -> changeset end end end