Skip to content

Commit b30c67d

Browse files
author
Leo B
committed
Fix integration tests
1 parent 7ffcb50 commit b30c67d

2 files changed

Lines changed: 8 additions & 9 deletions

File tree

lib/ecto/association.ex

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -983,7 +983,7 @@ defmodule Ecto.Association.Has do
983983
end
984984

985985
@doc false
986-
def nilify_all(%{related_key: [related_key]} = refl, parent, repo_name, opts) do
986+
def nilify_all(%{related_key: related_key} = refl, parent, repo_name, opts) when is_atom(related_key) do
987987
if query = on_delete_query(refl, parent) do
988988
Ecto.Repo.Queryable.update_all repo_name, query, [set: [{related_key, nil}]], opts
989989
end
@@ -995,18 +995,17 @@ defmodule Ecto.Association.Has do
995995
end
996996
end
997997

998-
defp on_delete_query(%{owner_key: [owner_key], related_key: [related_key],
999-
queryable: queryable}, parent) do
998+
defp on_delete_query(%{owner_key: owner_key, related_key: related_key, queryable: queryable}, parent)
999+
when is_atom(owner_key) and is_atom(related_key) do
10001000
if value = Map.get(parent, owner_key) do
10011001
from x in queryable, where: field(x, ^related_key) == ^value
10021002
end
10031003
end
10041004

1005-
defp on_delete_query(%{owner_key: owner_key, related_key: related_key,
1006-
queryable: queryable}, parent) do
1007-
values = Enum.map(owner_key, &Map.get(parent, &1))
1005+
defp on_delete_query(%{owner_key: owner_keys, related_key: related_keys, queryable: queryable}, parent) do
1006+
values = Enum.map(owner_keys, &Map.get(parent, &1))
10081007
if values != [] && Enum.all?(values) do
1009-
related_key
1008+
related_keys
10101009
|> Enum.zip(values)
10111010
|> Enum.reduce(from(x in queryable), fn {related_key_field, value}, query ->
10121011
query |> where([x], field(x, ^related_key_field) == ^ value)

lib/ecto/repo/preloader.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,9 @@ defmodule Ecto.Repo.Preloader do
288288

289289
defp fetched_records_to_tuple_ids([], _assoc, _related_key), do: []
290290

291-
defp fetched_records_to_tuple_ids([%{} | _] = entries, _assoc, {0, keys}) do
291+
defp fetched_records_to_tuple_ids([%{} | _] = entries, _assoc, {0, key_or_keys}) do
292292
Enum.map(entries, fn entry ->
293-
key = Enum.map(keys, &Map.fetch!(entry, &1)) |> unwrap_list()
293+
key = key_or_keys |> List.wrap |> Enum.map(&Map.fetch!(entry, &1)) |> unwrap_list()
294294
{key, entry}
295295
end)
296296
end

0 commit comments

Comments
 (0)