Today we discussed in forum about user_id in changesets. This is a better approach than allowing cast :user_id in changeset
you can look post about user_id
So for your case
def create(conn, %{"angebot" => angebot_params}) do
current_user = conn.assigns.current_user
case Projects.create_angebot(angebot_params, current_user) do
{:ok, angebot} ->
conn
|> put_flash(:info, "Angebot created successfully.")
|> redirect(to: edit_angebot_path(conn, :show, angebot))
{:error, %Ecto.Changeset{} = changeset} ->
render(conn, "new.html", changeset: changeset)
end
....
end
#lip/projects/projects.ex
def create_angebot(attrs, %User{id: user_id}) do
%Angebot{user_id: user_id}
|> Angebot.changeset(attrs)
|> Repo.insert()
end
#lip/projects/angebot.ex
#and delete cast :user_id in changeset function
|> cast(attrs, [:title, :subtitle, :content, :online, :since, :zip, :city, :country])