Miré el código fuente de ActiveRecord 2.3.5 (mysql_adapter.rb). En cuanto a la picadillo NATIVE_DATABASE_TYPES deja claro que no es compatible con el binario (16) tipo de datos:
NATIVE_DATABASE_TYPES = {
:primary_key => "int(11) DEFAULT NULL auto_increment PRIMARY KEY".freeze,
:string => { :name => "varchar", :limit => 255 },
:text => { :name => "text" },
:integer => { :name => "int", :limit => 4 },
:float => { :name => "float" },
:decimal => { :name => "decimal" },
:datetime => { :name => "datetime" },
:timestamp => { :name => "datetime" },
:time => { :name => "time" },
:date => { :name => "date" },
:binary => { :name => "blob" },
:boolean => { :name => "tinyint", :limit => 1 }
}
También tenga en cuenta que: binario no es lo que quiere, porque eso crea una columna BLOB.
Si tiene la inclinación, le recomendaría extender ActiveRecord para que admita el tipo BINARY (16).
Actualización: después de algunas búsquedas, la siguiente publicación de Matthew Higgins parece prometedora ("Si bien las sentencias SQL arbitrarias se pueden ejecutar en migraciones, una alternativa es extender el adaptador MySql para admitir nuevos tipos de columnas"): http://www.strictlyuntyped.com/2008/07/mysql-lovin-part-2-adding-new-column.html
Si hace que esto funcione, espero que comparta lo que se le ocurra. Al igual que Matthew, me gustaría ver que ActiveRecord tenga una API más limpia para agregar tipos de columnas.
¿Respondieron las respuestas y los comentarios a continuación? ¿Encontraste algo que funcionó para ti? –