すする、
ネストされた Ecto モデルをエンコードしようとしていますが、問題が発生しました。アンロードされたモデルをエンコードできないことに気付きました。残りをロードせずに1つの構造のみを選択する可能性があり、同時にツリー全体を選択する可能性が必要です。
メソッドを defimpl で使用しました。例:
defimpl Poison.Encoder, for: Hangman.MasterCat do
def encode(page, _options) do
%{
id: page.id,
name: page.name,
categories: page.categories
} |> Poison.Encoder.encode([])
end
end
defimpl Poison.Encoder, for: Hangman.Category do
def encode(category, _options) do
IO.inspect(category.words)
%{
id: category.id,
name: category.name,
words: category.words
} |> Poison.Encoder.encode([])
end
end
defimpl Poison.Encoder, for: Hangman.Word do
def encode(page, _options) do
%{
content: page.content
} |> Poison.Encoder.encode([])
end
end
これは構造全体で機能しますが、MasterCats のみを選択すると機能せず、このようなエラーが発生します。
cannot encode association :categories from Hangman.MasterCat to JSON because the association was not loaded. Please make sure you have preloaded the association or remove it from the data to be encoded