diff --git a/app/models/concerns/dossier_filtering_concern.rb b/app/models/concerns/dossier_filtering_concern.rb index 5e2d8e104..e102c1239 100644 --- a/app/models/concerns/dossier_filtering_concern.rb +++ b/app/models/concerns/dossier_filtering_concern.rb @@ -33,5 +33,11 @@ module DossierFilteringConcern q = Array.new(values.count, "(#{table_column} ILIKE ?)").join(' OR ') where(q, *(values.map { |value| "%#{value}%" })) } + + scope :filter_enum, lambda { |table, column, values| + table_column = ProcedurePresentation.sanitized_column(table, column) + q = Array.new(values.count, "(#{table_column} = ?)").join(' OR ') + where(q, *(values)) + } end end diff --git a/app/models/procedure_presentation.rb b/app/models/procedure_presentation.rb index c565c8604..7ac5e26a1 100644 --- a/app/models/procedure_presentation.rb +++ b/app/models/procedure_presentation.rb @@ -220,8 +220,13 @@ class ProcedurePresentation < ApplicationRecord dossiers.where("dossiers.#{column} IN (?)", values) end when TYPE_DE_CHAMP - dossiers.with_type_de_champ(column) - .filter_ilike(:champs, value_column, values) + if dossier_column.type == :enum + dossiers.with_type_de_champ(column) + .filter_enum(:champs, value_column, values) + else + dossiers.with_type_de_champ(column) + .filter_ilike(:champs, value_column, values) + end when 'etablissement' if column == 'entreprise_date_creation' dates = values