From f0ef186a4e557abbd5c20332ca41f201139b1920 Mon Sep 17 00:00:00 2001 From: David Taylor Date: Fri, 15 Jul 2022 13:16:20 +0100 Subject: [PATCH] FIX: Allow Symbol objects to be deserialized in PostRevision (stable) (#17512) Followup to bb287c6c74aed9c9ccd36f6270c219f806bb84f3 --- config/application.rb | 2 +- spec/models/post_revision_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/config/application.rb b/config/application.rb index d572bfe943..b8d07a3bff 100644 --- a/config/application.rb +++ b/config/application.rb @@ -246,7 +246,7 @@ module Discourse # see: http://stackoverflow.com/questions/11894180/how-does-one-correctly-add-custom-sql-dml-in-migrations/11894420#11894420 config.active_record.schema_format = :sql - config.active_record.yaml_column_permitted_classes = [Hash, HashWithIndifferentAccess, Time] + config.active_record.yaml_column_permitted_classes = [Hash, HashWithIndifferentAccess, Time, Symbol] # We use this in development-mode only (see development.rb) config.active_record.use_schema_cache_dump = false diff --git a/spec/models/post_revision_spec.rb b/spec/models/post_revision_spec.rb index 7bba51f7d6..e3e78e2927 100644 --- a/spec/models/post_revision_spec.rb +++ b/spec/models/post_revision_spec.rb @@ -23,4 +23,15 @@ describe PostRevision do } ) end + + it "can serialize and deserialize symbols" do + # Plugins may store symbolized values in this column + pr = Fabricate(:post_revision, modifications: { key: :value }) + pr.reload + expect(pr.modifications).to eq( + { + key: :value + } + ) + end end