     record
     |> Map.from_struct
     |> Map.delete(:__meta__)
+    |> Map.drop(assoc_keys(record))
     |> Map.drop(embed_keys(record))
-    |> Map.drop(belongs_to_assocs(record))
-    |> Map.drop(not_loaded_assocs(record))
   end
 
   @doc """

    end
  end

  defp belongs_to_assocs(model) do
    for {a, %{__struct__: Ecto.Association.BelongsTo}} <- get_assocs(model), do: a
  end


    struct(model)
    |> Ecto.Changeset.change(changes)
    |> put_assoc_changes(record)
    |> put_embed_changes(record)
    |> repo.insert!
    |> restore_belongs_to_associations(record)
