How about an actual factor method along the lines of:

```ruby
KNOWN_SERIALIZERS = { 'hal+json' => HalSerializer }

def to_media_type(media_type, options = {})
  build(media_type, options).to_media_type(options)
end

def build(media_type, options
  KNOWN_SERIALIZERS[media_type].new(self)
end

# alternately, if you don't think a serializer factory will be used in future

def to_media_type(media_type, options)
  KNOWN_SERIALIZERS[media_type].new(self).to_media_type(options)
end
```
I think instead of making a .() on the serializer instance (rubyists will shudder), it having a common method is a more intuitive approach and then adds an interface for testing.