I wonder if this could be improved a little. The original code called `#as_indexed_json` for each changed attribute in the model. If there were 10 changed attributes, there would be 10 calls to serialize the model. The code should probably only call `#as_indexed_json` once in order to get the list of keys.

The new code adds a map operation that converts all keys to strings, so if there were 10 keys to convert, and 10 attribute changes there would be 100 `#to_s` calls.

Symbol.`#to_s` creates a new String instance, while String.to_sym will always return the same symbol given the same String.

How about something like this?

```ruby
indexed_symbols = self.as_indexed_json.keys.map(&:to_sym)
changed_attributes.select { |k,v| indexed_symbols.include? k.to_sym }
```