Agreed. I also found it pretty odd. This is how I did instead:
defp save_demographic(socket, params) do
params
|> assign_current_user_param(socket)
|> Survey.create_demographic()
|> case do
{:ok, demographic} ->
send(self(), {:created_demographic, demographic})
socket
{:error, %Ecto.Changeset{} = changeset} ->
assign(socket, :changeset, changeset)
end
end
defp assign_current_user_param(params, socket) do
Map.put(params, "user_id", socket.assigns.current_user.id)
end
Also got rid of the assignment and field entirely!