rename `str` to `string` to fix overshadowing of variable
Fix state leaks in actionmailer/test/base_test.rb.
fixed typos in active_record basics [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.
add tests for symbols passed to polymorphic_url
test for inconsistency between String and Symbol url_for handling
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
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.