у меня есть этот код
defmodule Project.Search do
use Ecto.Model
defp search(query, search, order?) do
name_search = like_escape(search, ~r"(%|_)")
if String.length(search) >= 3 do
name_search = "%" <> name_search <> "%"
end
desc_search = String.replace(search, ~r"\s+", " & ")
query =
from var in query,
where: ilike(var.name, ^name_search) or
fragment("to_tsvector('english', (?->'description')::text) @@ to_tsquery('english', ?)",
var.meta, ^desc_search)
if order? do
query = from(var in query, order_by: ilike(var.name, ^name_search))
end
query
end
end
Когда я пытаюсь скомпилировать, я получаю эту ошибку
== Compilation error on file web/models/search.ex ==
** (Protocol.UndefinedError) protocol Enumerable not implemented for nil
(elixir) lib/enum.ex:1: Enumerable.impl_for!/1
(elixir) lib/enum.ex:112: Enumerable.reduce/3
(elixir) lib/enum.ex:1274: Enum.reduce/3
expanding macro: Ecto.Model.Dependent.__before_compile__/1
web/models/search.ex:1: Project.Search (module)
Это происходит только с последней версией Phoenix, она работала с версией 0.13.0.
Я попытался перейти на use Project.Web, :model, но получил ту же ошибку.
use Ecto.Modelнаimport Ecto.Query, only: [from: 2]и увидел, что это работает - person Gidrek   schedule 29.08.2015