Ensure HABTM relationships produce valid class names (Fixes #17119)
Merge pull request #17217 from codeodor/fix-17119

Ensure HABTM relationships produce valid class names (Fixes #17119)
added description for rails generators, and fixed sentence formation for active_support/notifications [ci skip]
Merge pull request #17572 from rishijain/update_docs_10

Fixed grammar about AS::Notifications [ci skip]
Revert the behavior of booleans in string columns to that of 4.1

Why are people assigning booleans to string columns? >_>

We unintentionally changed the behavior on Sqlite3 and PostgreSQL.
Boolean values should cast to the database's representation of true and
false. This is 't' and 'f' by default, and "1" and "0" on Mysql. The
implementation to make the connection adapter specific behavior is hacky
at best, and should be re-visted once we decide how we actually want to
separate the concerns related to things that should change based on the
database adapter.

That said, this isn't something I'd expect to change based on my
database adapter. We're storing a string, so the way the database
represents a boolean should be irrelevant. It also seems strange for us
to give booleans special behavior at all in string columns. Why is
`to_s` not sufficient? It's inconsistent and confusing. Perhaps we
should consider deprecating in the future.

Fixes #17571
Add support for MySQL columns charset and collation options.

    Example:

        create_table :foos do |t|
          t.string :string_cs_column, charset: 'utf8', collation: 'utf8_bin'
        end