class TopicSubtype include ActiveModel::Serialization attr_accessor :id, :options def initialize(id, options) @id = id @options = options end def attributes {'id' => @id, 'options' => @options } end def self.list return [] unless @archetypes.present? @archetypes.values end def self.user_to_user 'user_to_user' end def self.system_message 'system_message' end def self.moderator_warning 'moderator_warning' end def self.notify_moderators 'notify_moderators' end def self.notify_user 'notify_user' end def self.register(name, options={}) @subtypes ||= {} @subtypes[name] = TopicSubtype.new(name, options) end register 'user_to_user' register 'system_message' register 'moderator_warning' register 'notify_moderators' register 'notify_user' end