Ich versuche Guardian in meine API zu implementieren und führen Sie eine Anmeldung durch, um JWT zurück zu bekommen. Das Tutorial, das ich sehe, ist here. Das Problem besteht darin, die Anmeldung mit einem Benutzermodell zu implementieren, das dem im Beispiel ähnelt. Das Modell Code wie folgt aussieht:Protokoll Ecto.Queryable nicht implementiert für
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
Wenn ich die from_email rufen entweder aus Phoenix oder gerade in iex -S mischen, bekomme ich folgende Fehlermeldung:
user = PushflightServer.User.from_email („[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
ich muss fehlen etwas einfach, aber ich habe nicht in der Lage gewesen, eine Dokumentation darüber zu erfahren, warum dies geschieht. Das Einfügen der Daten mit dem Repo hat gut funktioniert. Irgendwelche Ideen?