Ich muss es übermäßig komplex machen, aber ich habe es schwer, meinen Kopf um ein einfaches Problem zu wickeln.Ecto aktualisiert Assoziationen has_one gehört_to
sagen, dass ich zwei Tabellen, global_users
und local_users
:
create table(:global_users, primary_key: false) do
add :id, :integer, primary_key: true
add :local_user_id, references(:local_users)
...
end
create table(:local_users, primary_key: false) do
add :id, :integer, primary_key: true
add :global_user_id, references(:global_users)
...
end
@primary_key {:id, :integer, autogenerate: false}
schema "global_users" do
has_one :local_user, Local.User
...
end
@primary_key {:id, :integer, autogenerate: false}
schema "local_users" do
belongs_to :global_user, Global.User
...
end
Programmatisch Ich werde zunächst eine global_user schaffen, dann eine LOCAL_USER erstellen, dann muss ich die beiden nach der Tat in Verbindung bringen.
Z. B. gegeben eine bestehende, gültige global_user
und eine vorhandene gültige local_user
, wie würde ich eine bestehende local_user
zu einem bestehenden global_user
assoziieren?
Sobald ich eine has_one
hinzufügen, habe ich nicht mehr Zugriff auf den Fremdschlüssel selbst (z. B. gibt es keine %Global.User{:local_user_id}
zu aktualisieren, nur eine Zuordnung!).
Noch einmal, ich weiß, das scheint einfach, und ich bin sicher, ich vermisse nur etwas Offensichtliches.
Vielen Dank im Voraus!