Ответ 1
Это не доступно в Ecto, об этом подробно обсуждается на этой проблеме GitHub.
Для этого можно использовать запрограммированный запрос:
defmodule MyApp.Comment do
...schema, etc.
def fancy(query) do
from c in query,
where: type == 0
end
def normal(query) do
from c in query,
where: type == 1
end
end
Затем вы можете использовать has_many :comments, MyApp.Comment
и запрос на основе этого:
assoc(post, :comments) |> Comment.fancy() |> Repo.all()
Вот сообщение в блоге о составных запросах.
Вы также можете использовать предварительную загрузку с запросом:
fancy_query = from(c in Comments, where: type == 0)
Repo.preload(post, comments: fancy_query)