[#3196] Make TypeDeChamp#options compatible with raw JSON

instead of YAML inside a JSON string.
We still need to support the YAML form until the data has been migrated
This commit is contained in:
Frederic Merizen 2018-12-19 18:43:56 +01:00
parent 06f3143e61
commit 36d6a43084

View file

@ -37,7 +37,25 @@ class TypeDeChamp < ApplicationRecord
belongs_to :parent, class_name: 'TypeDeChamp' belongs_to :parent, class_name: 'TypeDeChamp'
has_many :types_de_champ, foreign_key: :parent_id, class_name: 'TypeDeChamp', dependent: :destroy has_many :types_de_champ, foreign_key: :parent_id, class_name: 'TypeDeChamp', dependent: :destroy
store :options, accessors: [:cadastres, :quartiers_prioritaires, :parcelles_agricoles] store_accessor :options, :cadastres, :quartiers_prioritaires, :parcelles_agricoles
# TODO start: remove after migrating `options` column to (non YAML encoded) JSON
class MaybeYaml
def load(options)
if options.is_a?(String)
YAML.safe_load(options, [ActiveSupport::HashWithIndifferentAccess])
else
options
end
end
def dump(options)
options
end
end
serialize :options, MaybeYaml.new
# TODO stop: remove after migrating `options` column to (non YAML encoded) JSON
after_initialize :set_dynamic_type after_initialize :set_dynamic_type
after_create :populate_stable_id after_create :populate_stable_id