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

この関数はどこに書かれ、どのようにモデルに影響を与えますか?それがグレートになると説明できる場合 –

0

エドゥアルドは、上記のコメントで述べたようにあなたがEcto.assoc_loaded/1使用することができます?を

関連する問題