Ich versuche, dieses Hex-Paket zu verwenden: https://github.com/meh/amnesiaElixier + Amnesie: Wie liest man ein Attribut?
Hier ist mein Schema:
use Amnesia
require Logger
require IEx
defdatabase Database do
deftable User, [{ :id, autoincrement }, :device_identifier, :match_history], type: :ordered_set, indices: [:device_identifier] do
@type t :: %User{ id: non_neg_integer, device_identifier: String.t, match_history: List.t }
...
end
end
und hier, wo der Fehler auftritt:
Amnesia.transaction do
// IEx.pry
queue = User.where(:device_identifier != device_identifier)
if queue do
Logger.info "dequeuing another user"
matched_user = List.first(queue.values)
matched_user |> User.delete
push socket, "match_found", %{ device_identifier: matched_user.device_identifier }
else
Logger.info "queuing user"
push socket, "queued", %{}
end
end
Wenn ich versuche, matched_user.device_identifier
zu nennen, es schlägt fehl. Aber ist das nicht ein Attribut auf dem Modell? In der README im Github Repo ruft es content
auf dem Nachrichtenmodell, also warum kann ich nicht dasselbe mit device_identifier
auf meinem Benutzermodell?
Ich versuche es sogar mit dem id
Feld:
pry(8)> matched_user.id
** (UndefinedFunctionError) function Database.User.id/1 is undefined or private. Did you mean one of:
* id/0
Gibt es einen Weg, um herauszufinden, welche Methoden meines matched_user Objekt reagiert?
Können Sie versuchen, den Wert von 'matched_user' zu drucken, bevor Sie' matched_user.id' ausführen? – Dogbert
@Dogbert yeh Ich verstehe: '{Database.User, 2," 5pyia9cej4 ", nil}' – Edmund