У меня есть схема банка и филиала. Таким образом, у банка много филиалов, но когда я создаю банк, он должен получить идентификатор филиала и его данные.
схема банка
defmodule Banking.Schema.Bank do
use Ecto.Schema
import Ecto.Changeset
alias Banking.Schema.Branch
schema "banks" do
field :name, :string
has_many :branches, Branch
timestamps()
end
def changeset(bank, attrs) do
bank
|> cast(attrs, [:name])
|> validate_required([:name])
|> Repo.preload(:branches)
end
end
схема ветви
defmodule Banking.Schema.Branch do
use Ecto.Schema
import Ecto.Changeset
alias Banking.Model.Bank, as: BankModel
alias Banking.Schema.Bank
@primary_key {:ifsc, :string, []}
schema "branches" do
field :branch, :string
field :address, :string
field :city, :string
field :district, :string
field :state, :string
belongs_to :bank, Bank
timestamps()
end
def changeset(branch, attrs) do
branch
|> cast(attrs, [:ifsc, :branch, :address, :city, :district, :state])
|> validate_required([:ifsc, :branch, :address, :city, :district, :state])
|> put_assoc(:bank, attrs["bank"])
end
end
Как вы видите для схемы филиала, я создал первичный ключ для кода ifsc.
Итак, я хочу, чтобы я создал ревизию для банка. Я хочу получить подробную информацию о ветке с помощью ifsc-кода.
bank = Bank.changeset(%Bank{}, %{name: "sbi", branch: "122"})
Вот так, но сейчас я не могу предварительно загрузить ветку.