Champ personnalisé avec une liste

Comment créer et interagir avec un champ personnalisé contenant une liste de chaînes à partir d’un plugin ?

Je pensais que cela ressemblerait au code ci-dessous, mais je ne parviens pas à trouver la bonne méthode.

   # tableau de chaînes
   Topic.register_custom_field_type('my_list', [:string])
    add_to_serializer(:topic, :my_list, false) {object.topic.my_list}

    DiscourseEvent.on(:topic_created) do |topic|
        topic.custom_fields["my_list"] = ["item1", "item2"] 
        topic.custom_fields["my_list"] = topic.custom_fields["my_list"].push("item3")
    end