anchor.diff:  
   The provided `serializer` must respond to `load` and `dump`.
   
  -Bear in mind that serializers have their limitations. For example `JSON` would convert symbols to strings and you have to prepare for that when retrieving events.
  -
  -```ruby
  +
  +## Configuring a different mapper
  +
  +JSON is a popular serialization choice when paired with JSON/JSONB storage on Potgres. To make full use of it, set:
  +
  +```ruby
  +# config/environments/*.rb
  +
  +Rails.application.configure do
  +  config.to_prepare do
  +    Rails.configuration.event_store = RailsEventStore::Client.new(
  +      mapper: RubyEventStore::Mappers::JSONMapper.new
  +    )
  +  end
  +end
  +
  +```
  +
  +Additionally, if you are using Postgres, you can tell the migration to use JSON or JSONB data types for the `data` and `metadata` fields by
  +passing in a `--data-type` to the generator.
  +
  +```console
  +$ rails generate rails_event_store_active_record:migration --data-type=jsonb
  +```
  +
  +<div class="bg-blue-100 border-l-4 border-blue-500 text-blue-600 px-4" role="alert">
  +  <p class="text-base font-bold">Bear in mind that `JSON` will convert symbols to strings and you have to prepare for that when retrieving events.</p>
  +  <p class="text-base inline-block">
  +    ```ruby
   JSON.load(JSON.dump({foo: :bar}))
   => {"foo"=>"bar"}
   ```
  
positive.code: the client](/docs/install).
  
  Here is an example on how to configure RailsEventStore to serialize
  events' `data` and `metadata` using `JSON`.
  
  ```ruby
  # config/environments/*.rb
  
negative.code: OrderPlaced = Class.new(MyEvent)
  ```
  
  That shields you from data keys being transformed from symbols into strings. It doesn't do anything with data values associated to those keys.
  
  ```ruby
  event_store.publish(OrderPlaced.new(event_id: 'e34fc19a-a92f-4c21-8932-a10f6fb2602b', data: { foo: :bar }))
  