|
1 | 1 | import Ecto.Query, only: [from: 1, from: 2, join: 4, join: 5, distinct: 3, where: 3] |
| 2 | + |
2 | 3 | defmodule Ecto.Association.NotLoaded do |
3 | 4 | @moduledoc """ |
4 | 5 | Struct returned by associations when they are not loaded. |
@@ -248,24 +249,23 @@ defmodule Ecto.Association do |
248 | 249 |
|
249 | 250 | values = List.wrap(values) |
250 | 251 |
|
251 | | - query = case {join_to, dest_out_key, values} do |
252 | | - {nil, single_key, [single_value]} when is_atom(single_key) -> |
253 | | - query |
254 | | - |> where([{dest, final_bind}], field(dest, ^single_key) == ^single_value) |
| 252 | + query = case {join_to, List.wrap(dest_out_key), values} do |
255 | 253 | {nil, [single_key], [single_value]} -> |
256 | 254 | query |
257 | 255 | |> where([{dest, final_bind}], field(dest, ^single_key) == ^single_value) |
258 | 256 |
|
259 | 257 | {nil, [single_key], values} -> |
260 | 258 | query |
261 | 259 | |> where([{dest, final_bind}], field(dest, ^single_key) in ^values) |
| 260 | + |
262 | 261 | {nil, dest_out_keys, [single_value]} -> |
263 | 262 | dest_out_keys |
264 | 263 | |> Enum.zip(single_value) |
265 | 264 | |> Enum.reduce(query, fn {dest_out_key_field, value}, query -> |
266 | 265 | query |
267 | 266 | |> where([{dest, final_bind}], field(dest, ^dest_out_key_field) == ^value) |
268 | 267 | end) |
| 268 | + |
269 | 269 | {nil, dest_out_keys, values} -> |
270 | 270 | query |
271 | 271 | |> where_keys(final_bind, dest_out_keys, values) |
|
0 commit comments