tinyint(1)はActiveRecordでbooleanになる

ちょっとはまってしまった・・・

ソースを確認してみる

lib\active_record\connection_adapters\mysql_adapter.rb

def native_database_types #:nodoc
{
:primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY KEY",
:string => { :name => "varchar", :limit => 255 },
:text => { :name => "text" },
:integer => { :name => "int", :limit => 11 },
:float => { :name => "float" },
:datetime => { :name => "datetime" },
:timestamp => { :name => "datetime" },
:time => { :name => "time" },
:date => { :name => "date" },
:binary => { :name => "blob" },
:boolean => { :name => "tinyint", :limit => 1 }
}
end

回避する方法

config/environment.rb

ActiveRecord::ConnectionAdapters::MysqlAdapter.emulate_booleans = false

条件文を統一して変更すればいいのですが・・・