perf(types_de_champs_controller): preload procedure to avoid n+1 query in champs_summary
This commit is contained in:
parent
261932b56f
commit
50d148d412
3 changed files with 35 additions and 31 deletions
|
@ -362,40 +362,11 @@ module Administrateurs
|
||||||
end
|
end
|
||||||
|
|
||||||
def champs
|
def champs
|
||||||
@procedure = Procedure.includes(draft_revision: {
|
@procedure = Procedure.includes_for_champ_public_edition.find(@procedure.id)
|
||||||
revision_types_de_champ: {
|
|
||||||
type_de_champ: { piece_justificative_template_attachment: :blob, revision: [], procedure: [] },
|
|
||||||
revision: [],
|
|
||||||
procedure: []
|
|
||||||
},
|
|
||||||
revision_types_de_champ_public: {
|
|
||||||
type_de_champ: { piece_justificative_template_attachment: :blob, revision: [], procedure: [] },
|
|
||||||
revision: [],
|
|
||||||
procedure: []
|
|
||||||
},
|
|
||||||
procedure: []
|
|
||||||
}).find(@procedure.id)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def annotations
|
def annotations
|
||||||
@procedure = Procedure.includes(draft_revision: {
|
@procedure = Procedure.includes_for_champ_private_edition.find(@procedure.id)
|
||||||
revision_types_de_champ: {
|
|
||||||
type_de_champ: { piece_justificative_template_attachment: :blob, revision: [], procedure: [] },
|
|
||||||
revision: [],
|
|
||||||
procedure: []
|
|
||||||
},
|
|
||||||
revision_types_de_champ_private: {
|
|
||||||
type_de_champ: { piece_justificative_template_attachment: :blob, revision: [], procedure: [] },
|
|
||||||
revision: [],
|
|
||||||
procedure: []
|
|
||||||
},
|
|
||||||
revision_types_de_champ_public: {
|
|
||||||
type_de_champ: { piece_justificative_template_attachment: :blob, revision: [], procedure: [] },
|
|
||||||
revision: [],
|
|
||||||
procedure: []
|
|
||||||
},
|
|
||||||
procedure: []
|
|
||||||
}).find(@procedure.id)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def detail
|
def detail
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
module Administrateurs
|
module Administrateurs
|
||||||
class TypesDeChampController < AdministrateurController
|
class TypesDeChampController < AdministrateurController
|
||||||
before_action :retrieve_procedure
|
before_action :retrieve_procedure
|
||||||
|
before_action :preload_procedure
|
||||||
after_action :reset_procedure, only: [:create, :update, :destroy, :piece_justificative_template]
|
after_action :reset_procedure, only: [:create, :update, :destroy, :piece_justificative_template]
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
@ -169,5 +170,9 @@ module Administrateurs
|
||||||
def draft
|
def draft
|
||||||
@procedure.draft_revision
|
@procedure.draft_revision
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def preload_procedure
|
||||||
|
@procedure = Procedure.includes_for_champ_private_edition.find(@procedure.id)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -237,6 +237,34 @@ class Procedure < ApplicationRecord
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scope :includes_for_champ_public_edition, -> {
|
||||||
|
includes(draft_revision: {
|
||||||
|
revision_types_de_champ: {
|
||||||
|
type_de_champ: { piece_justificative_template_attachment: :blob, revision: [], procedure: [] },
|
||||||
|
revision: [],
|
||||||
|
procedure: []
|
||||||
|
},
|
||||||
|
revision_types_de_champ_public: {
|
||||||
|
type_de_champ: { piece_justificative_template_attachment: :blob, revision: [], procedure: [] },
|
||||||
|
revision: [],
|
||||||
|
procedure: []
|
||||||
|
},
|
||||||
|
procedure: []
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
scope :includes_for_champ_private_edition, -> {
|
||||||
|
includes_for_champ_public_edition.includes(
|
||||||
|
draft_revision: {
|
||||||
|
revision_types_de_champ_private: {
|
||||||
|
type_de_champ: { piece_justificative_template_attachment: :blob, revision: [], procedure: [] },
|
||||||
|
revision: [],
|
||||||
|
procedure: []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
validates :libelle, presence: true, allow_blank: false, allow_nil: false
|
validates :libelle, presence: true, allow_blank: false, allow_nil: false
|
||||||
validates :description, presence: true, allow_blank: false, allow_nil: false
|
validates :description, presence: true, allow_blank: false, allow_nil: false
|
||||||
validates :administrateurs, presence: true
|
validates :administrateurs, presence: true
|
||||||
|
|
Loading…
Add table
Reference in a new issue