I have a Products table and want to add a column:
t.references :imageable, :polymorphic => true
I was trying to generate migration for this by doing:
$ rails generate migration AddImageableToProducts imageable:references:polymorphic
but I am obviously doing it wrong. Can anybody make any suggestion? Thanks
When I try to manually put it in after generating the migration, I did it like this:
class AddImageableToProducts < ActiveRecord::Migration
def self.up
add_column :products, :imageable, :references, :polymorphic => true
end
def self.down
remove_column :products, :imageable
end
end
and it still hasn't worked
Before Rails 4 there was no built-in generator for polymorphic associations. If you are using an early version of Rails generate a blank migration and then modify it by hand according to your needs.
Update: You'll need to specify which table you're changing. According to this SO answer:
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 added a generator for polymorphic associations (see simon-olivier answer)