through references rails migrations many has_one has_many has_and_belongs_to_many has example belongs and ruby-on-rails polymorphic-associations rails-migrations

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