3
Ein organization
hat viele users
Ecto Großeltern Schlüssel auf verschachtelte Kinder
schema "organizations" do
field :name, :string
has_many :users, TestApp.User
end
A user
hat viele subordinates
schema "users" do
field :name, :string
belongs_to :organization, TestApp.Organization
belongs_to :manager, TestApp.User,
foreign_key: :manager_id
has_many :subordinates, TestApp.User,
foreign_key: :manager_id
end
Wie stelle ich sicher, Untergebene haben einen organization_id
Wert, wenn sie auf die folgende Weise erzeugt werden ?
test "create Org and User and Subordinate in one step" do
subordinate =
%User{}
|> User.changeset(%{name: "A Subordinate"})
manager =
%User{}
|> User.changeset(%{name: "A Manager"})
|> Changeset.put_assoc(:subordinates, [subordinate])
organization =
%Organization{}
|> Organization.changeset(%{name: "An Organization"})
|> Changeset.put_assoc(:users, [manager])
%{users: [ %{subordinates: [subordinate]} = manager]} = organization = Repo.insert!(organization)
# Passes
assert manager.organization_id == organization.id
# Fails
assert subordinate.organization_id == organization.id
end