0

私はこの方法を持っています

@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

では、ダイアライザーはどのように文句を言うのでしょうか??

4

1 に答える 1