Quale funzione posso utilizzare per verificare se un'associazione è già stata caricata? Sarebbe bello verificare se è stata caricata un'associazione invece di provare a utilizzarla e ottenere l'errore Ecto.Association.NotLoaded
.Come verificare se un'associazione non è stata caricata?
6
A
risposta
3
Non so se c'è una funzione built-in per verificare la presenza di questo, ma si potrebbe scrivere il proprio così:
defmodule PreloadCheck do
def is_preloaded(model, assoc) do
case Map.get(model, assoc) do
%Ecto.Association.NotLoaded{} -> false
_ -> true
end
end
end
Qui assoc
sarebbe l'atomo che rappresenta il nome dell'associazione.
L'utilizzo della corrispondenza del modello in case
consente di verificare se l'associazione è stata caricata o se sta ancora restituendo una struttura Ecto.Association.NotLoaded
.
5
È possibile utilizzare assoc_loaded?
Riferimento: https://hexdocs.pm/ecto/Ecto.html#assoc_loaded?/1
0
È possibile utilizzare Ecto.assoc_loaded/1 come Eduardo menzionato nei commenti di cui sopra?. assoc_loaded?/1 documentation
Grazie. Finisco per scrivere una funzione che verifica se l'associazione è una lista e la conteggio come caricata. Sto ancora sperando che ci sia qualcosa di funzione builtin che fa questo. –
Sì, puoi usare 'Ecto.assoc_loaded?';) Restituirà un bool per caricato o meno. Non so esattamente per quanto tempo la funzione è disponibile, almeno per la versione 2.1.4 è disponibile. –
Dove verrà scritta questa funzione e come influenzerà il modello? se puoi spiegare che sarà grandioso –