2016-06-27 4 views

ответ

3

Не уверен, что если есть встроенная функция для проверки, но вы можете написать свой собственный, как это:

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

Здесь assoc бы атом, представляющий ваше имя ассоциации.

Использование pattern matching в case позволяет Вам проверить, была ли загружена ваша ассоциация, или если она все еще возвращает структуру Ecto.Association.NotLoaded.

+0

Спасибо. Я в конечном итоге пишу функцию, которая просто проверяет, является ли ассоциация списком и считает, что она загружена. Я все еще надеюсь, что есть что-то встроенная функция, которая делает это. –

+1

Да, вы можете использовать 'Ecto.assoc_loaded?';; Он вернет bool для загрузки или нет. Я просто не уверен, сколько времени функция доступна, по крайней мере для версии 2.1.4. –

+0

Где эта функция будет написана и как повлияет на модель? если вы можете объяснить, что будет приветствовать –

0

Вы можете использовать Ecto.assoc_loaded/1, как Эдуардо упоминалось в предыдущих комментариях?. assoc_loaded?/1 documentation

Смежные вопросы