У меня есть таблица продуктов, и я хочу добавить столбец:
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
и это все еще не сработало
ruby-on-rails
polymorphic-associations
rails-migrations
railslearner
источник
источник
Ответы:
Насколько мне известно, встроенного генератора полиморфных ассоциаций нет. Создайте пустую миграцию, а затем измените ее вручную в соответствии с вашими потребностями.
Обновление : вам нужно указать, какую таблицу вы меняете. Согласно этому SO-ответу :
источник
schema.rb
должен обновиться, но ничего не скажет оpolymorphic
. Вместо этого вы должны увидеть фактические поля, которые использует Rails ( дополнительную информацию можно найти в руководствах по Rails ).references
столбец? Мне нужно это проиндексировать?imageable_type
и / или поimageable_id
мере необходимости.imageable_id
иimageable_type
работало. Спасибо за вашу помощь.То, что вы пытаетесь сделать, еще не реализовано в стабильной версии рельсов, поэтому ответ Мишель на данный момент правильный. Но эта функция будет реализована в рельсах 4 и уже доступна в версии Edge следующим образом (согласно этому ИЗМЕНЕНИЮ ):
источник
add_reference :products, :imageable, polymorphic: true, index: true
{polymorphic}
нужно\{polymorphic\}
Вы также можете сделать следующее:
источник
Можешь попробовать
rails generate migration AddImageableToProducts imageable:references{polymorphic}
источник
{
и}
нужно\{polymorphic\}