Added rollback method to ActiveModel::Dirty
Update documentation on STI change handling

Documenting a potential source of confusion about how STI classes handle changes.
Merge pull request #15987 from jamesprior/patch-2

Update documentation on STI change handling
Move STI docs off of the main Base document, leaving a note
Fix 10.3 invite_email.body assert_match example.

Currently there is no implicit conversion for Mail::Body to string
therefore .to_s must be applied. This is exampled in 10.2.2.
Merge pull request #15989 from nickpellant/master

Fix 10.3 invite_email.body assert_match documentation example.
Don't add a second method for attribute existence

We already had one in the public API that people can use more easily for
the transition
Merge pull request #15991 from sgrif/sg-has-attribute

Don't add a second method for attribute existence
Merge pull request #14861 from igor04/dirty-rollback

Added rollback method to ActiveModel::Dirty
Add CHANGELOG entry for #14861 and document private methods on the API
Rename rollback_changes to undo_changes

To avoid overload with database rollback
Add String support for min/max attributes on DatetimeField
Merge pull request #15214 from todd/date_field_docs

Added String support for min and max properties for date field helpers
Use if/else

Since we are using both branches of the code is preferable to use
if/else over the early return.
Add CHANGELOG entry for #15214

Closes #15214
push host / port / protocol extraction up

Then we only need to extract host once.