Tengo una tabla de productos y quiero agregar una columna:
t.references :imageable, :polymorphic => true
Intenté 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
ruby-on-rails
polymorphic-associations
rails-migrations
railslearner
fuente
fuente
Respuestas:
Hasta donde 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 :
fuente
schema.rb
debería actualizarse, pero no dirá nada al respectopolymorphic
. En su lugar, debería ver los campos reales que utiliza Rails (las Guías de Rails tienen más información).references
columna? ¿Necesito indexar eso?imageable_type
y / oimageable_id
según sea necesario.imageable_id
yimageable_type
trabajado. Gracias por tu ayuda.Lo que está intentando hacer aún no está implementado en la versión estable de rails, por lo que la respuesta de Michelle es la correcta por ahora. Pero esta característica se implementará en los rieles 4 y ya está disponible en la versión de borde de la siguiente manera (de acuerdo con este CAMBIO ):
fuente
add_reference :products, :imageable, polymorphic: true, index: true
{polymorphic}
necesita ser escapado con la concha de pez, por ejemplo\{polymorphic\}
También puede hacer lo siguiente:
fuente
Puedes probar
rails generate migration AddImageableToProducts imageable:references{polymorphic}
fuente
{
y}
necesita ser escapado con la concha de pescado al menos, por ejemplo\{polymorphic\}