Verify that route constraints respond to the expected messages instead of silently failing to enforce the constraint
Make remote_ip detection properly handle private IPv6 addresses

Fixes #12638.
Refactor AR's validations_test.rb

The `:context` switch feature is implemented in
ActiveRecord::Validations#valid? method, so we should rename the test
names, and execute `valid?` in the test.

Change test name in AR's validations_test.rb

This test is testing save method's code
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.
SQLite3: Always close statements.

SQLite3 adapter must make sure to close statements after queries.

Fixes: #13631
Stringify variables names for mysql connections

For mysql2/mysql adapters, `sql_mode` variable name set in `database.yml`
as string, was ignored and `sql_mode` was set to use strict mode.

Fixes #14895
don't allocate string on hash access
do not allocate strings while creating urls
eliminate conditional when sending the named route method
avoid calling extract_record multiple times
[skip ci] Document: required `via` option in `match` routing method.
Add documentation to select_tag for :selected option
Give real privacy to class methods in AR::PredicateBuilder
Merge pull request #14916 from moktin/real_privacy_for_functions_in_predicate_builder

Give real privacy to class methods in AR::PredicateBuilder
Fixed custom validation context bug where child
associations were not being saved.

Fixes #13854.

[Eric Chahin, Aaron Nelson, & Kevin Casey]
Merge pull request #14922 from rizwanreza/add-selected-documentation-to-select-tag

Add documentation to select_tag for :selected option
Avoid unnecessary conditional block

GeneratedAttribute#column_name checks already for reference? on the
attribute returning the right name to use as symbol for label and field.
Merge pull request #14928 from potomak/update-scaffold-form-template

Avoid unnecessary conditional block
Merge pull request #13640 from maginatics/fix_sqlite3_ensure_master

SQLite3: Always close statements.

Conflicts:
	activerecord/CHANGELOG.md