我被“天真时间”的选角错误困住了。有人能帮我解锁吗?
这是我想要做的POST请求: URL:http://localhost:4000/api/workingtimes/1
正文:
{“开始”:"2019-08-21 07:27:00",“结束”:"2020-09-20 07:27:00“}
下面是我的模式:
defmodule TimeManager.Workingtimes.Workingtime do
use Ecto.Schema
import Ecto.Changeset
schema "workingtimes" do
field :start, :naive_datetime
field :end, :naive_datetime
belongs_to :user, TimeManager.Users.User
timestamps()
end
@doc false
def changeset(workingtime, attrs) do
workingtime
|> cast(attrs, [:start, :end, :user_id])
|> validate_required([:start, :end, :user_id])
|> assoc_constraint(:user)
end
end下面是我在控制器中的创建函数:
def create(conn, workingtime_params) do
with {:ok, %Workingtime{} = workingtime} <- Workingtimes.create_workingtime(workingtime_params) do
conn
|> put_status(:created)
|> put_resp_header("location", Routes.workingtime_path(conn, :show, workingtime))
|> render("workingtime.json", workingtime: workingtime)
end
end最后,这里是我的create_workingtime函数在我的workingtimes.ex
def create_workingtime(attrs \\ %{}) do
%{"start" => starttime, "end" => endtime, "user_id"=>user_id } = attrs
{:ok, naivestart} = NaiveDateTime.from_iso8601(starttime)
{:ok, naiveend} = NaiveDateTime.from_iso8601(endtime)
attrs = %{"start" => naivestart, "end"=>naiveend, "user_id"=>user_id}
Workingtime
|> Workingtime.changeset(attrs)
|> Repo.insert()
end日志中的错误是:
发布于 2020-10-21 22:11:48
演员/4将模式结构作为第一个参数,而不是模式模块。在您的create_workingtime/1函数中,尝试更改为:
%Workingtime{}
|> Workingtime.changeset(attrs)
|> Repo.insert()发布于 2020-10-21 22:11:36
发现了这个问题,在create_workingtime函数中,它是:% Workingtime {}
def create_workingtime(attrs \\ %{}) do
%{"start" => starttime, "end" => endtime, "user_id"=>user_id } = attrs
{:ok, naivestart} = NaiveDateTime.from_iso8601(starttime)
{:ok, naiveend} = NaiveDateTime.from_iso8601(endtime)
attrs = %{"start" => naivestart, "end"=>naiveend, "user_id"=>user_id}
%Workingtime{}
|> Workingtime.changeset(attrs)
|> Repo.insert()
endhttps://stackoverflow.com/questions/64472282
复制相似问题