Как правильно создать поле даты в феникс-фреймворке? - PullRequest
2 голосов
/ 26 сентября 2019

Я создаю приложение Phoenix API.Вот мой код.

alias CardsWeb.Repo
alias CardsWeb.Infrastructure.User

Repo.insert! %User{login: "user", firstname: "User", lastname: "User", dateOfBirth: "1999-5-18"}

При запуске я получаю следующую ошибку

** (CompileError) priv/repo/seeds.exs:15: Infrastructure.User.__struct__/1 is undefined, cannot expand struct Infrastructure.User

Вот определение сущности.

defmodule Infrastructure.User do
  use Ecto.Schema
  import Ecto.Changeset

  schema "users" do
    field :dateOfBirth, :date
    field :firstName, :string
    field :lastName, :string
    field :login, :string

    timestamps()
  end

  @doc false
  def changeset(user, attrs) do
    user
    |> cast(attrs, [:login, :firstName, :lastName, :dateOfBirth])
    |> validate_required([:login, :firstName, :lastName, :dateOfBirth])
  end
end

Обновление: Я заметил, что имя и фамилия должны быть firstName и lastName.Я исправил это, но все равно получаю ту же ошибку.

1 Ответ

2 голосов
/ 26 сентября 2019

Вы не можете добавлять дату как строку напрямую, вместо того, чтобы добавлять ее как строку, используйте ~D sigil:

dateOfBirth: ~D[1999-05-18]

edit: пространство имен, которое вы указали в псевдониме seeds.exs для пользовательской схемы, также неверно,изменить:

alias CardsWeb.Infrastructure.User

на

alias Infrastructure.User
...