Как генерировать миграцию, чтобы сделать ссылки полиморфными
У меня есть таблица Products и вы хотите добавить столбец:
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
и он все еще не работал
Насколько я знаю, нет встроенного генератора для полиморфных ассоциаций. Создайте пустую миграцию, а затем измените ее вручную в соответствии с вашими потребностями.
Обновление: Вам нужно указать, какую таблицу вы меняете. Согласно этот ответ 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
То, что вы пытаетесь сделать, еще не реализовано в стабильной версии рельсов, поэтому ответ Брэндона сейчас является правильным. Но эта функция будет реализована в rails 4 и уже доступна в кросс-версии следующим образом (в соответствии с этим CHANGELOG):
$ rails generate migration AddImageableToProducts imageable:references{polymorphic}
Вы также можете сделать следующее:
class AddImageableToProducts < ActiveRecord::Migration
def change
add_reference :products, :imageable, polymorphic: true, index: true
end
end
Вы можете попробовать rails generate migration AddImageableToProducts imageable:references{polymorphic}
Посмотрите другие вопросы по меткам ruby-on-rails rails-migrations polymorphic-associations или Задайте вопрос