如何生成迁移以使引用具有多态性

我有一个产品表,并希望添加一列:

t.references :imageable, :polymorphic => true 

我试图通过这样做来为此生成迁移:

 $ rails generate migration AddImageableToProducts imageable:references:polymorphic 

但我显然是做错了。 有人可以提出任何build议吗? 谢谢

当我尝试在生成迁移后手动将其置入时,我是这样做的:

 class AddImageableToProducts < ActiveRecord::Migration def self.up add_column :products, :imageable, :references, :polymorphic => true end def self.down remove_column :products, :imageable end end 

它仍然没有工作

据我所知,没有内置的多态关联发生器。 生成一个空白迁移,然后根据您的需要手动修改它。

更新 :你需要指定你正在改变的表格。 根据这个答案 :

 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的稳定版本中实现,所以Brandon的答案现在是正确的。 但是这个特性将在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}