ruby on rails - references - cómo generar migración para hacer referencias polimórficas
rails has_one through (4)
Tengo una tabla de Productos y quiero agregar una columna:
t.references :imageable, :polymorphic => true
Estaba tratando de generar migración para esto haciendo:
$ rails generate migration AddImageableToProducts imageable:references:polymorphic
pero obviamente lo estoy haciendo mal. ¿Alguien puede hacer alguna sugerencia? Gracias
Cuando trato de ponerlo manualmente después de generar la migración, lo hice así:
class AddImageableToProducts < ActiveRecord::Migration
def self.up
add_column :products, :imageable, :references, :polymorphic => true
end
def self.down
remove_column :products, :imageable
end
end
y todavía no ha funcionado
Hasta donde yo sé, no hay un generador incorporado para asociaciones polimórficas. Genere una migración en blanco y luego modifíquela a mano según sus necesidades.
Actualización : deberá especificar qué tabla está cambiando. De acuerdo con esta respuesta SO :
class AddImageableToProducts < ActiveRecord::Migration
def up
change_table :products do |t|
t.references :imageable, polymorphic: true
end
end
def down
change_table :products do |t|
t.remove_references :imageable, polymorphic: true
end
end
end
Lo que está tratando de hacer aún no está implementado en la versión estable de los rieles, por lo que la respuesta de Brandon es la correcta por el momento. Pero esta característica se implementará en los rieles 4 y ya está disponible en la versión de borde de la siguiente manera (según este CHANGELOG ):
$ rails generate migration AddImageableToProducts imageable:references{polymorphic}
Puede probar los rails generate migration AddImageableToProducts imageable:references{polymorphic}
También podría hacer lo siguiente:
class AddImageableToProducts < ActiveRecord::Migration
def change
add_reference :products, :imageable, polymorphic: true, index: true
end
end