2017-10-14 2 views
0

でクエリを作成しようとしていたとき、私はエリクシールで初心者だし、私は、クエリを作成しようとしている「変数が存在しない」:私はエクト

def posts_liked(%{id: id}, _info) do 
    query = from u in Like, where: u.user_id == ^id 
    {:ok, Repo.all(query)} 
end 

しかし、と言います変数uは存在しません。しかし、in oficial docにはこのコードと他のマニュアルもあります。それを修正するには?

Likeスキームは次のとおりです。

schema "likes" do 
    belongs_to :post, Myapp.Post, foreign_key: :post_id 
    belongs_to :user, Myapp.User, foreign_key: :user_id 

    timestamps() 
end 
+0

このモジュールに 'import Ecto.Query'がありますか? – Dogbert

答えて

1

私の推測では、あなたがこのモジュールでimport Ecto.Queryを逃しているということです。それがなければ、Ectoはfromはマクロではなく通常の関数だと考え、引数が有効であるかどうかのチェックを開始します。最初の引数はu in Likeで、Enum.member?(Like, u)になります。 Likeは有効な値ですが、uという名前の変数がなく、Elixirがそのエラーをスローします。モジュールに

import Ecto.Query 

または

import Ecto.Query, only: [from: 2] 

を追加すると、この問題を解決します。

関連する問題