メモメモ。しかしこれ、本体にパッチあてるとしたら、実質 +3-1 で済むような気が。
Index: activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb =================================================================== --- activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb (revision 8979) +++ activerecord/lib/active_record/connection_adapters/abstract/schema_statements.rb (working copy) @@ -280,6 +280,10 @@ end def add_column_options!(sql, options) #:nodoc: + if Base.configurations[RAILS_ENV]["adpater"] == "mysql" && + (options[:binary] || (options[:column] && options[:column].binary)) + sql << " BINARY" + end sql << " DEFAULT #{quote(options[:default], options[:column])}" if options_include_default?(options) sql << " NOT NULL" if options[:null] == false end Index: activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb =================================================================== --- activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb (revision 8979) +++ activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb (working copy) @@ -249,7 +249,7 @@ class IndexDefinition < Struct.new(:table, :name, :unique, :columns) #:nodoc: end - class ColumnDefinition < Struct.new(:base, :name, :type, :limit, :precision, :scale, :default, :null) #:nodoc: + class ColumnDefinition < Struct.new(:base, :name, :type, :limit, :precision, :scale, :binary, :default, :null) #:nodoc: def sql_type base.type_to_sql(type.to_sym, limit, precision, scale) rescue type @@ -425,6 +425,7 @@ column.scale = options[:scale] column.default = options[:default] column.null = options[:null] + column.binary = options[:binary] @columns << column unless @columns.include? column self end
誰かテスト書いてねじ込んでー。