From c45a6dd2d92a08a4650ceba9e6c3490b894697c2 Mon Sep 17 00:00:00 2001 From: Thomas von Deyen Date: Tue, 19 Nov 2019 19:45:07 +0100 Subject: [PATCH] Eager load essence associations in controllers --- .../alchemy/admin/elements_controller.rb | 8 ++++++-- app/controllers/alchemy/api/contents_controller.rb | 14 ++++++++++++-- app/controllers/alchemy/api/elements_controller.rb | 8 ++++++-- app/controllers/alchemy/api/pages_controller.rb | 8 ++++++-- 4 files changed, 30 insertions(+), 8 deletions(-) diff --git a/app/controllers/alchemy/admin/elements_controller.rb b/app/controllers/alchemy/admin/elements_controller.rb index 8df88aba7f..791c7ffb4a 100644 --- a/app/controllers/alchemy/admin/elements_controller.rb +++ b/app/controllers/alchemy/admin/elements_controller.rb @@ -107,13 +107,17 @@ def fold def element_includes [ { - contents: :essence + contents: { + essence: :ingredient_association + } }, :tags, { all_nested_elements: [ { - contents: :essence + contents: { + essence: :ingredient_association + } }, :tags ] diff --git a/app/controllers/alchemy/api/contents_controller.rb b/app/controllers/alchemy/api/contents_controller.rb index ee99360c94..13162e08ca 100644 --- a/app/controllers/alchemy/api/contents_controller.rb +++ b/app/controllers/alchemy/api/contents_controller.rb @@ -16,7 +16,7 @@ def index if params[:element_id].present? @contents = @contents.where(element_id: params[:element_id]) end - @contents = @contents.includes(:essence) + @contents = @contents.includes(*content_includes) render json: @contents, adapter: :json, root: 'contents' end @@ -37,10 +37,20 @@ def show @content = Content.where( element_id: params[:element_id], name: params[:name] - ).includes(:essence).first || raise(ActiveRecord::RecordNotFound) + ).includes(*content_includes).first || raise(ActiveRecord::RecordNotFound) end authorize! :show, @content respond_with @content end + + private + + def content_includes + [ + { + essence: :ingredient_association + } + ] + end end end diff --git a/app/controllers/alchemy/api/elements_controller.rb b/app/controllers/alchemy/api/elements_controller.rb index 481d5b0933..45367a8104 100644 --- a/app/controllers/alchemy/api/elements_controller.rb +++ b/app/controllers/alchemy/api/elements_controller.rb @@ -40,13 +40,17 @@ def element_includes { nested_elements: [ { - contents: :essence + contents: { + essence: :ingredient_association + } }, :tags ] }, { - contents: :essence + contents: { + essence: :ingredient_association + } }, :tags ] diff --git a/app/controllers/alchemy/api/pages_controller.rb b/app/controllers/alchemy/api/pages_controller.rb index cb7cd8378b..2a3acb19d0 100644 --- a/app/controllers/alchemy/api/pages_controller.rb +++ b/app/controllers/alchemy/api/pages_controller.rb @@ -108,13 +108,17 @@ def page_includes { nested_elements: [ { - contents: :essence + contents: { + essence: :ingredient_association + } }, :tags ] }, { - contents: :essence + contents: { + essence: :ingredient_association + } }, :tags ]