У меня есть две таблицы, скажем, например. Оплата и возврат с транзакционным_идом в качестве внешнего ключа для возврата.ошибка в ассоциациях using own_to
defmodule Payments.Payment do
use Payments.Web, :model
schema "payment" do
field :payment_id, :string
field :captured_amount, :decimal
field :transaction_id, :string
timestamps()
end
def changeset(struct, params \\ %{}) do
struct
|> cast(params, [:payment_id, :transaction_id, :captured_amount])
|> validate_required([:payment_id, ::transaction_id, :captured_amount])
end
end
defmodule Payments.Refund do
use Payments.Web, :model
@primary_key {:refund_id, :string, []}
schema "refund" do
field :state, :string
field :pay_id, :string
field :amount, :decimal
field :create_time, Ecto.DateTime
belongs_to :transaction_id, Payments.Payment
timestamps()
end
def changeset(struct, params \\ []) do
struct
|> cast(params, [:refund_id, :state, :transaction_id, :pay_id, :amount, :create_time])
|> validate_required([:refund_id, :pay_id, :amount])
end
end
не может вставить данные о возмещении, без соответствующей ошибки соответствия функциональных предложений. Я считаю, что проблема связана с набором изменений, поскольку я не могу работать с ним.
Можете ли вы добавить полное точное сообщение об ошибке? Одна из проблем, которую я вижу, заключается в том, что вы не определили 'foreign_key' для свойства belongs_to. Вероятно, вы хотите 'принадлежит_от: платеж, Payments.Payment, foreign_key:: transaction_id, ссылки:: transaction_id', так как вы хотите подключить поля транзакции двух таблиц. – Dogbert
Спасибо @Dogbert, но теперь я получаю эту ошибку. * (Ecto.ChangeError) значение '# Ecto.Association.NotLoaded <ассоциация: transaction_id не загружается>' for 'Payments.Refund.transac имя_события' 'insert' не соответствует типу: id –
Также я получаю эта ошибка, при попытке отката ошибки: [transaction_id: {"is invalid", [type:: id, validation:: cast]}], –