Экто ассоциированный на пустой список
Я хочу получить на языке кучу статей, из которых у меня есть удостоверение личности.
Я пытаюсь что-то вроде этого:
Repo.all(from a in Article, where: a.id in ^article_ids) |> Ecto.assoc(:language) |> Repo.all
Это прекрасно работает, когда первый вызов Repo возвращает результаты. Но если первый вызов Repo вернет пустой список, я получу ошибку аргумента:
** (ArgumentError) cannot retrieve association :language for empty list
Какой хороший способ решить эту проблему в Фениксе?
1 ответ
Решение
Не уверен, как бы вы сделали это элегантно, используя Ecto.assoc/1
, но ваш запрос может быть переписан с помощью JOIN
запрос, как это:
Repo.all(
from a in Article,
join: l in assoc(a, :language),
where: a.id in ^article_ids,
select: l
)