diff --git a/lib/topic_creator.rb b/lib/topic_creator.rb index 5f4aa7f16e9..654fc716f4b 100644 --- a/lib/topic_creator.rb +++ b/lib/topic_creator.rb @@ -35,8 +35,9 @@ class TopicCreator def create topic = Topic.new(setup_topic_params) setup_tags(topic) + if fields = @opts[:custom_fields] - topic.custom_fields = fields + topic.custom_fields.merge!(fields) end DiscourseEvent.trigger(:before_create_topic, topic, self) diff --git a/spec/components/topic_creator_spec.rb b/spec/components/topic_creator_spec.rb index c475a08e92f..36a8717b9ad 100644 --- a/spec/components/topic_creator_spec.rb +++ b/spec/components/topic_creator_spec.rb @@ -36,6 +36,18 @@ describe TopicCreator do expect(TopicCreator.create(moderator, Guardian.new(moderator), valid_attrs)).to be_valid end + it "supports both meta_data and custom_fields" do + opts = valid_attrs.merge( + meta_data: { import_topic_id: "foo" }, + custom_fields: { import_id: "bar" } + ) + + topic = TopicCreator.create(admin, Guardian.new(admin), opts) + + expect(topic.custom_fields["import_topic_id"]).to eq("foo") + expect(topic.custom_fields["import_id"]).to eq("bar") + end + context 'regular user' do before { SiteSetting.min_trust_to_create_topic = TrustLevel[0] }