Невозможно переместить. Вставить значение в поле own_to - PullRequest
0 голосов
/ 18 сентября 2018

В настоящее время у меня есть таблица, в которой есть поле с отношением own_to с другой таблицей.Когда я пытаюсь использовать Repo.insert для добавления значения в это поле, я получаю ошибку «is_invalid».Ошибка генерируется как начальным файлом, так и командной строкой вручную.

Структура для вставки:

Repo.insert! %Customer_list{
    age: 24,
    first_name: "Tony",
    last_name: "Stark",
    customer_id: "D00001",
    list_date: ~D[2018-09-13],
    consultant_id: 8
  }

Модель:

defmodule InformAPI.CTL.Customer_list do
  use Ecto.Schema
  import Ecto.Changeset


  schema "customer_lists" do
    field :age, :integer
    field :first_name, :string
    field :last_name, :string
    field :customer_id, :string
    field :list_date, :date
    belongs_to :consultant_id, InformAPI.CTL.Customer_list_consultants

    timestamps()
  end

  @doc false
  def changeset(customer_list, attrs) do
    Customer_list
    |> cast(attrs, [:customer_id, :first_name, :age, :last_name,  :list_date, :consultant_id])
    |> validate_required([:customer_id, :first_name, :age, :last_name,  :consultant_id, ])
  end
end

Все поля, кроме 'consultant_id 'может быть введен правильно.'Consultant_id' - это поле типа bigint в базе данных Postgres.База данных Customer_lists имеет следующие ключи:

customer_lists_consultant_id_fkey
customer_lists_pkey
customer_lists_consultant_id_index

И таблица customer_lists_consultants имеет:

customer_list_consultants_pkey

Я не уверен, что является недопустимым.Поле consultant_id не принимает значения любого типа (String, int и т. Д.).

1 Ответ

0 голосов
/ 18 сентября 2018

Ecto по умолчанию предполагает, что фактическим столбцом базы данных отношения belongs_to является имя объявления плюс "_id".В вашем случае Ecto предположил, что имя столбца было consultant_id_id, поэтому значение consultant_id игнорировалось cast.

. Исправление заключается в том, чтобы изменить имя отношения на * 1008.*.

belongs_to :consultant, InformAPI.CTL.Customer_list_consultants
...