2016-06-27 8 views

Antwort

3

Nicht sicher, ob es eine eingebaute Funktion für diese zu überprüfen, aber Sie können Ihre eigene wie folgt schreiben:

defmodule PreloadCheck do 
    def is_preloaded(model, assoc) do 
    case Map.get(model, assoc) do 
     %Ecto.Association.NotLoaded{} -> false 
     _ -> true 
    end 
    end 
end 

Hier assoc das Atom Ihr Verband Namen darstellt wäre.

Mithilfe der Mustererkennung in case können Sie überprüfen, ob Ihre Verknüpfung geladen ist oder ob immer noch eine Ecto.Association.NotLoaded-Struktur zurückgegeben wird. assoc_loaded?

Referenz

+0

Danke. Ich schreibe am Ende eine Funktion, die einfach prüft, ob die Assoziation eine Liste ist, und diese als geladen zähle. Ich hoffe immer noch, dass es etwas eingebauter Funktion gibt, die das tut. –

+1

Ja, Sie können 'Ecto.assoc_loaded?';) Verwenden, es wird ein Bool für geladen zurückgegeben oder nicht. Ich bin mir nur nicht sicher, wie lange die Funktion zumindest für Version 2.1.4 verfügbar ist. –

+0

Wo wird diese Funktion geschrieben und wie wirkt sich das auf das Modell aus? Wenn Sie erklären können, wird das großartig sein –