2016-03-03 17 views
7

के लिए लागू नहीं किया गया है। मैं अपने एपीआई में गार्जियन को लागू करने की कोशिश कर रहा हूं और जेडब्ल्यूटी को वापस पाने के लिए इसके माध्यम से लॉगिन कर रहा हूं। मैं जिस ट्यूटोरियल को देख रहा हूं वह here है। समस्या उपयोगकर्ता मॉडल का उपयोग करके लॉगिन को कार्यान्वित कर रही है जैसा कि वे उदाहरण में उपयोग कर रहे हैं। मॉडल कोड लगता है:प्रोटोकॉल Ecto.Queryable

उपयोगकर्ता = PushflightServer.User.from_email:

defmodule PushflightServer.User do 
    use PushflightServer.Web, :model 

use Ecto.Repo 
import Ecto.Query 
    alias PushflightServer.Repo 

    schema "users" do 
    field :name, :string 
    field :email, :string 
    field :encrypted_password, :string 
    field :password, :string, virtual: true 
    field :verify_token, :string 
    field :verify_date, Ecto.DateTime 

    timestamps 
    end 

    def from_email(nil), do: { :error, :not_found } 
    def from_email(email) do 
    IO.write("Before email") 
    IO.inspect(email) 
    Repo.one(User, email: email) 
    end 

अगर मैं या तो फीनिक्स के भीतर से या सीधे में FROM_EMAIL फोन आईईएक्स -S मिश्रण, मैं निम्नलिखित त्रुटि मिलती है ("[email protected]")

** (Protocol.UndefinedError) protocol Ecto.Queryable not implemented for User, the given module does not exist (ecto) lib/ecto/queryable.ex:33: Ecto.Queryable.Atom.to_query/1 (ecto) lib/ecto/repo/queryable.ex:90: Ecto.Repo.Queryable.execute/5 (ecto) lib/ecto/repo/queryable.ex:15: Ecto.Repo.Queryable.all/4 (ecto) lib/ecto/repo/queryable.ex:44: Ecto.Repo.Queryable.one/4

मैं कुछ सरल लापता होना चाहिए, लेकिन मैं यह क्यों हो रहा है के बारे में कोई दस्तावेज़ प्राप्त करने में सक्षम नहीं किया गया है। रेपो का उपयोग कर डेटा डालने से ठीक काम किया। कोई विचार?

उत्तर

3

मैं तुम्हें पूरी तरह से UserPushflightServer.User के रूप में नाम स्थान की जरूरत है लगता है या आप शॉर्टकट का उपयोग कर सकते __MODULE__

2

आप नामस्थान के साथ मॉड्यूल का उल्लेख होना चाहिए

def from_email(email) do 
    PushflightServer.one(PushflightServer.User, email: email) 
    end 
संबंधित मुद्दे