не может использовать ^ xxx вне предложений соответствия

Эта функция:

defp entries(query, page_number, page_size) do
  offset = page_size * (page_number - 1)

  query
  |> limit([_], ^page_size) # error
  |> offset([_], ^offset)
  |> Repo.all
end

дает исключение:

cannot use ^pg_size outside of match clauses

Почему это и как это исправить?

Ответы

Ответ 1

Обычно это знак того, что вы не импортировали соответствующие макросы из Ecto.Query.

Ответ 2

Попробуй это:

query
|> limit(page_size)
|> offset(offset)
|> Repo.all

Ответ 3

Вы должны использовать ^ (контактный оператор - https://hexdocs.pm/elixir/Kernel.SpecialForms.html)

query
|> limit(^page_size)
|> offset(^v_offset) # I don't know if offset var override offset function of Ecto
|> Repo.all

Ответ 4

Другая возможная причина этой ошибки - слова с ошибками. В моем случае это был form вместо from.