我在之前的迁移中创建了一个带有references
列的表,现在我想放弃它。我知道我可以在生成的名称上调用remove_column
,但有没有办法使用表名删除它?
remove_references :blah, :users
代替remove_column :blah, :user_id
答案 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方法。我从未见过它在实践中使用过,但它的描述听起来是正确的。