Debe cambiar de db/schema.rb a db/structure.sql .
El problema subyacente es que schema.rb es una representación de la estructura de la base de datos tal como la ve ActiveRecord, pero ActiveRecord no entiende muchas cosas (como create type , CHECK restricciones y otras cosas que aparecen en execute some_raw_sql declaraciones en migraciones) que hace PostgreSQL. Puedes create type todo lo que quieras menos schema.rb nunca lo verá.
Si desea usar cosas que ActiveRecord no entiende, debe usar db/structure.sql para almacenar la estructura de su base de datos. structure.sql almacena la estructura de la base de datos como la entiende la base de datos, no como la entiende ActiveRecord.
Cambiar es fácil:
- Actualice su
config/application.rbpara contenerconfig.active_record.schema_format = :sql. - Haga un
rake db:structure:dumppara obtener undb/structure.sqlinicial . - Eliminar
db/schema.rbdesde su árbol de directorios y control de revisiones. - Añadir
db/structure.sqlal control de revisiones. - Ajuste sus hábitos de rake:
- Usar
db:structure:dumpen lugar dedb:schema:dump - Usar
db:structure:loaden lugar dedb:schema:load
- Usar
Dicho esto, no estoy seguro de qué tan bien enum nativo de PostgreSQL los tipos interactuarán con ActiveRecord como nunca lo he hecho. enum de AR s
son una traducción del lado del cliente entre cadenas y enteros pero PostgreSQL's enum s
se manejan dentro de la base de datos y no se conocen entre sí. Puede haber conflictos y deberá asegurarse de mantenerlos sincronizados entre sí.