I’m trying to insert a changeset into the database with this struct:
%{"address" => "asdf", "apt" => "asdfa", "city" => "asdf", "state" => "asdf", "user_id" => 2, "zip" => "asdf"}
but I get the error
value %{"address" => "asdf", "apt" => "asdfa", "city" => "asdf", "state" => "asdf", "user_id" => 2, "zip" => "asdf"} for Mm.Orders.Order.user_id in insert does not match type :id
I’m taking the user_id
from the conn
and updating the params like so:
def create(
%{private: %{:plug_session => %{"user" => user_id}}} = conn,
%{"order" => order_params}
) do
user_order_params = Map.update(order_params, "user_id", user_id, & &1)
case Orders.create_order(user_order_params) do
{:ok, order} ->
conn
|> put_flash(:info, "Order created successfully.")
|> redirect(to: Routes.order_path(conn, :show, order))
{:error, %Ecto.Changeset{} = changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
My schema looks like
schema "orders" do
... fields
belongs_to :user, User
What am I missing here? The user_id is an integer. Whats the difference between type id
and a type integer
?