私のPhoenixアプリケーションでは、ContactテーブルとAddressテーブルがあります。接触スキーマは次のとおりです。Ecto単純な外部キー
schema "contacts" do
field :name, :string
field :number, :string
has_one :address, App.Address, on_delete: :nothing
timestamps()
end
アドレススキーマは、私はちょうど連絡先データベースから充填アドレスのドロップダウンを経由して選択することでaddress_idを持ちたい
schema "addresses" do
field :name, :string
field :lat, :decimal
field :lng, :decimal
timestamps()
end
です。しかし、フェニックスは、だから、しかし、私はアドレスが連絡先または多くの連絡先に所属したいが、私はアドレステーブルにcontact_idフィールドを望んでいない、アドレスにcontact_idフィールドを検索しようとしている
`App.Address.contact_id` in `where` does not exist in the schema in query:
from a in App.Address,
where: a.contact_id == ^9435,
select: {a.contact_id, a}
を返します。エクトー・アソシエーションでこれをどのように達成するのですか?
私は、各contact_idとaddress_idのエントリがペアになっている仲介テーブルでこれを行うことができますが、不要な複雑さと抽象度を追加すると考えているので避けたいと思います。
編集:ありがとう、私はちょうどポストの後にちょうど逆にそれを考える必要があることを理解した。アドレスとして多くの連絡先があり、連絡先には1つのアドレスがあると考えると、関係は意味をなさない。私はちょうどそれが必ずしも真実ではないときにアドレスが連絡先に属すると思って立ち往生した。
"アドレス帳のcontact_idフィールドは必要ありません"レコードはどのようにデータベースに関連付けられますか? – Dogbert
多くの連絡先が1つのアドレスを共有できます。しかし、各連絡先には1つのアドレスしかありません。 – albydarned