Fix bugs with changed attributes tracking when transaction gets rollback
Fix Hash#deep_merge bug and improve documentation — resolves #12738

Previously merging into a hash with a falsy value would not result in
the merge-block being called. The fix is simply to check for presence
of the key in the hash.

The documentation example for `deep_merge` now appropriately
demonstrates what a deep merge does.
Fix Formatting in AR Readme

Don't make free form text appear in code blocks [ci skip]
fixed typos in active_record basics [skip ci]
Merge pull request #15002 from vanderhoop/master

typo fixes in active_record_basics.md [skip ci]
test, persist inherited class with different table name. Refs #14971.

This case prevents against regressions. The change was suggested in a recent
PR but the all our tests passed.
[ci skip] document type_cast_for_write
[ci skip] document ActionDispatch::HTTP::Headers
add tests for symbols passed to polymorphic_url
HTTP::Headers#key? correctly converts


Previously if you were looking for a given key, the header may incorrectly tell you that it did not exist even though it would return a valid value:

```ruby
env     = { "CONTENT_TYPE" => "text/plain" }
headers = ActionDispatch::Http::Headers.new(env)
headers["Content-Type"] 
# => "text/plain"

headers.key?("Content-Type")
# => false
```

This PR fixes that behavior by converting the key before checking for presence
test for inconsistency between String and Symbol url_for handling
Merge pull request #15012 from schneems/schneems/headers-key

HTTP::Headers#key? correctly converts
Merge pull request #13166 from bogdan/transaction-magic

[Regression 3.2 -> 4.0] Fix bugs with changed attributes tracking when transaction gets rollback
Keep track of dirty attrs after after rollback.

[related #13166]
Merge branch 'rm-trasaction-fix-13166'
Merge pull request #12746 from coreyward/master

Fix Hash#deep_merge bug and improve documentation — resolves #12738
Return a non zero code when db has never been setup on status
Add CHANGELOG entry for #14989

Closes #14989
Use Rails::Paths::Path#existent in database_configuration

Database configuration was trying to load the first path that
config.paths['config/database'] was returning even if the path didn't
exist in the filesystem.

Because Rails::Paths::Path has the possibility to return more than 1
path (as an array), database_configuration should filter down the paths
to the existing one and then load the first one.

This would make it possible to move the database.yml file and add the
new path to paths['config/database'] and still load the configurations.
Merge pull request #15015 from pothibo/database-configuration

Use Rails::Paths::Path#existent in database_configuration