你如何在rails 3.1中删除`references`列?

时间:2011-10-11 03:28:18

标签: ruby-on-rails ruby migration

我在之前的迁移中创建了一个带有references列的表,现在我想放弃它。我知道我可以在生成的名称上调用remove_column,但有没有办法使用表名删除它?

remove_references :blah, :users代替remove_column :blah, :user_id

2 个答案:

答案 0 :(得分:4)

正如您猜测的那样,有一种名为remove_references的方法。它只需要一个参数,同样references也需要一个参数:

来自API文档:

remove_references(*args)

#Removes a reference. Optionally removes a type column. remove_references and
#remove_belongs_to are acceptable.
Examples

 t.remove_references(:goat)
 t.remove_references(:goat, :polymorphic => true)
 t.remove_belongs_to(:goat)

答案 1 :(得分:3)

没有特殊方法可以这样做。当你考虑到这一点时,它是完全合理的,因为references方法实际上并没有在db中创建外部约束,这意味着这个生成的列根本不是特殊的。

更新

正如@Zabba所指出的那样,似乎有remove_references方法。我从未见过它在实践中使用过,但它的描述听起来是正确的。