А вот оно что:
Each of the database adapters is responsible for determining how to
handle a boolean column in a way that makes sense for their specific
backend. In the case of PostgreSQL and OpenBase this is trivial,
since these database backends have a boolean type column built-in.
For MySQL - as has been pointed out - booleans are usually handled as
tinyint. The MySQL adapter therefore will default to handle tinyint
columns as booleans. However, this behavior can be changed by
setting MysqlAdapter.emulate_booleans = false.
If you define your schema within rails and give the column a type
of :boolean, then the adapter you are using will create a column of
whatever type makes sense for that database, thus achieving (at least
to this extent) database agnosticism. Beautiful. Sorta brings a
tear to your eye, doesn't it?