Estoy escribiendo una secuencia de comandos de migración para crear una tabla con una columna de clave principal que se llama guid
y es VARCHAR(25)
. El problema es que siento que tengo que duplicar mi esfuerzo para lograr lo que debería ser posible en un solo paso.Migración de carriles Crear clave principal de tabla
Si me quedo:
create_table(:global_feeds, :primary_key => 'guid') do |t|
t.string :guid, :limit => 25
t.text :title
t.text :subtitle
...
t.timestamps
end
me sale una tabla con una clave principal llamado guid
ninguna columna llamada id
(que es lo que quiero). Sin embargo, el problema es que la columna guid
es INT(11)
con el incremento automático activado. Así que tengo que ejecutar un comando adicional:
change_column :global_feeds, :guid, :string, :limit => 25
parece un poco complicado a tener que correr básicamente dos comandos SQL para obtener lo que creo que debería ser posible en uno.
¿Alguna sugerencia sobre cómo optimizar esto?
Desafortunadamente, esto sigue siendo dos sentencias de SQL como la mía. Acaba de voltear el orden de las operaciones: primero está definiendo el tipo de columna y luego especificando la clave primaria. – Ryan
Supongo que no puedes hacer eso en una sola operación, pero supongo que no tiene nada de malo. Está perfectamente bien que la migración tenga dos declaraciones para casos un poco más complejos. –
Además, no estoy seguro de si ActiveRecord funciona bien con claves primarias no enteras en absoluto. –