我可以使用什么功能来检查是否已加载关联?
最好检查是否加载了关联,而不是尝试使用它并导致Ecto.Association.NotLoaded
错误。
答案 0 :(得分:10)
您可以使用assoc_loaded?
答案 1 :(得分:5)
不确定是否有内置函数来检查这个,但你可以这样编写自己的函数:
defmodule PreloadCheck do
def is_preloaded(model, assoc) do
case Map.get(model, assoc) do
%Ecto.Association.NotLoaded{} -> false
_ -> true
end
end
end
此处assoc
将是表示您的关联名称的原子。
在case
中使用模式匹配可以检查您的关联是否已加载,或者它是否仍在返回Ecto.Association.NotLoaded
结构。
答案 2 :(得分:0)
您可以像上面评论中提到的Eduardo一样使用Ecto.assoc_loaded?/ 1。 assoc_loaded?/1 documentation