2016-06-27 4 views
6

연결이 이미로드되어 있는지 확인하는 데 사용할 수있는 기능은 무엇입니까? 연결을 사용하려고 시도하고 Ecto.Association.NotLoaded 오류가 발생하는 대신 연결이로드되었는지 확인하는 것이 좋습니다.연결이로드되지 않았는지 확인하는 방법은 무엇입니까?

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

이 연결 이름을 나타내는 원자 같습니다가이 확인하기 위해 내장 함수,하지만 당신이 이런 식으로 자신을 쓸 수 있다면

답변

3

확실하지.

case에서 패턴 일치를 사용하면 연결이로드되었는지 또는 구조체가 여전히 Ecto.Association.NotLoaded 구조체를 반환하는지 확인할 수 있습니다. https://hexdocs.pm/ecto/Ecto.html#assoc_loaded?/1

+0

감사합니다. 나는 연관성이리스트인지로드 된 것으로 간주하는지 간단한 점검을하는 함수를 작성한다. 나는 이것을 수행하는 내장 함수가 있기를 바라고 있습니다. –

+1

네,'Ecto.assoc_loaded? ';)를 사용할 수 있습니다.로드 된 상태인지 아닌지에 대한 bool을 반환합니다. 나는 단지 버전 2.1.4 버전의 기능을 사용할 수있는 정확한 길이를 정확히 알지 못한다. –

+0

이 함수는 어디에 쓰이며 모델에 어떤 영향을 미칩니 까? 그게 greate라고 설명 할 수 있다면 –

0

에두아르도 위의 댓글에서 언급 한 것처럼 당신은 Ecto.assoc_loaded/1 사용할 수 있습니다?를

관련 문제