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
|
||||
|
||||
def champs
|
||||
@procedure = Procedure.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: []
|
||||
}).find(@procedure.id)
|
||||
@procedure = Procedure.includes_for_champ_public_edition.find(@procedure.id)
|
||||
end
|
||||
|
||||
def annotations
|
||||
@procedure = Procedure.includes(draft_revision: {
|
||||
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)
|
||||
@procedure = Procedure.includes_for_champ_private_edition.find(@procedure.id)
|
||||
end
|
||||
|
||||
def detail
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
module Administrateurs
|
||||
class TypesDeChampController < AdministrateurController
|
||||
before_action :retrieve_procedure
|
||||
before_action :preload_procedure
|
||||
after_action :reset_procedure, only: [:create, :update, :destroy, :piece_justificative_template]
|
||||
|
||||
def create
|
||||
|
@ -169,5 +170,9 @@ module Administrateurs
|
|||
def draft
|
||||
@procedure.draft_revision
|
||||
end
|
||||
|
||||
def preload_procedure
|
||||
@procedure = Procedure.includes_for_champ_private_edition.find(@procedure.id)
|
||||
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 :description, presence: true, allow_blank: false, allow_nil: false
|
||||
validates :administrateurs, presence: true
|
||||
|
|
Loading…
Add table
Reference in a new issue