DirtyModel uses a hash to keep track of any changes made to attributes
of an instance. When using the attribute_will_change! method, you must
supply a string and not a symbol or the *_changed? method will break
(because it is looking for the attribute name as a string in the keys
of the underlying hash). To remedy this, I simply made the underlying
hash a HashWithIndifferentAccess so it won't matter if you supply
the attribute name as a symbol or string to attribute_will_change!.
Fix a typo in the code of Testing guide.

Replace the word «Accepts» by «Accept» in the example of custom request headers.
Merge pull request #12431 from GRoguelon/master

Fix a typo in the code of Testing guide. [ci skip]
Merge pull request #8791 from griffinmyers/master

Updated DirtyModel's @changed_attributes hash to be symbol/string agnostic

Conflicts:
	activemodel/CHANGELOG.md
map the association chain to table names
Port test from cf1904f to avoid future regression

Related issue: #11939, #12084
Merge pull request #12435 from sikachu/master-port-12084

Port test from cf1904f to avoid future regression