プリロードを明示的に使用せずに外部アソシエーションをプリロードする方法はありますか?
スキーマのオプションのようなものですか?
schema "gadgets" do
field :foo,
has_many :bars, Myapp.Bar, preload: true
end
私は次のようなことをしています
Repo.get(Gadget, id)
|> Repo.preload: [:bars]
編集:私がこれをやろうとしている理由は、関連モデルをすでにプリロードされている関連モデルにプリロードしたいからです。
preload: [:invoices preload: :items]
クエリの一部としてプリロードすることもできます。
defmodule Gadget do
use Ecto.Model
# ...
def with_invoices(query) do
from q in query, preload: [invoices: :items]
end
end
次に:
Gadget
|> Gadget.with_invoices
|> Repo.get!(id)