私はこの方法を持っています
@spec modify_query(Ecto.Query.t) :: Ecto.Query.t
def modify_query(query) do
# modifies a Ecto.Query.t
end
次に、そのメソッドをクエリでチェーンします。
Item
|> where([active: true])
|> order_by([desc: :start])
|> modify_query
コードは正しく動作しますが、次のように文句を言うため、 fordialyzer
order_by
が a を返していないようです:Ecto.Query.t
呼び出し 'modify_query'... には型 atom() の項がありません | 第 1 引数として 'Elixir.Ecto.Query':t() (不透明なサブタームを含む)
コメントアウトして# |> order_by([desc: :start])
もdialyzer
文句は言わない
次の出力を iex でテストしました。
Item
|> where([active: true])
|> order_by([desc: :start])
データ型は Ecto.Query であると書かれています:
Term
#Ecto.Query<from r in Item, where: r.active == true, order_by: [desc: r.start]>
Data type
Ecto.Query
では、ダイアライザーはどのように文句を言うのでしょうか??