24 lines
805 B
Ruby
24 lines
805 B
Ruby
|
# frozen_string_literal: true
|
|||
|
|
|||
|
module Maintenance
|
|||
|
class CleanHeaderSectionOptionsTask < MaintenanceTasks::Task
|
|||
|
# In the rest of PR 10713
|
|||
|
# TypeDeChamp options may contain options which are not consistent with the
|
|||
|
# type_champ (e.g. a ‘header_section’ TypeDeChamp which has a
|
|||
|
# drop_down_options key/value in its options).
|
|||
|
# The aim here is to clean up the options so that only those wich are useful
|
|||
|
# for the type_champ in question.
|
|||
|
|
|||
|
def collection
|
|||
|
TypeDeChamp
|
|||
|
.where(type_champ: 'header_section')
|
|||
|
.where.not(options: {})
|
|||
|
.where.not("(SELECT COUNT(*) FROM jsonb_each_text(options)) = 1 AND options ? 'header_section_level'")
|
|||
|
end
|
|||
|
|
|||
|
def process(tdc)
|
|||
|
tdc.update(options: tdc.options.slice(:header_section_level))
|
|||
|
end
|
|||
|
end
|
|||
|
end
|