как создать миграцию, чтобы сделать ссылки полиморфными
у меня есть таблица продуктов и хочу добавить столбец:
t.references :imageable, :polymorphic => true
Я пытался создать миграцию для этого делать:
$ rails generate migration AddImageableToProducts imageable:references:polymorphic
но я, очевидно, делаю это неправильно. Кто-нибудь может сделать какое-нибудь предложение? Спасибо
когда я пытаюсь вручную поместить его после создания миграции, я сделал это так:
class AddImageableToProducts < ActiveRecord::Migration
def self.up
add_column :products, :imageable, :references, :polymorphic => true
end
def self.down
remove_column :products, :imageable
end
end
и он до сих пор не работал
4 ответа:
насколько я знаю, нет встроенного генератора для полиморфных ассоциаций. Создайте пустую миграцию, а затем измените ее вручную в соответствии с вашими потребностями.
обновление: Вам нужно будет указать, какую таблицу вы меняете. Согласно это так ответ:
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
то, что вы пытаетесь сделать, еще не реализовано в стабильной версии rails, поэтому ответ Брэндона является правильным на данный момент. Но эта функция будет реализована в rails 4 и уже доступна в версии edge следующим образом (согласно этому журнал изменений):
$ rails generate migration AddImageableToProducts imageable:references{polymorphic}