Rails 4:如何从数据库中删除或删除(连接)表表?

时间:2013-12-14 00:14:45

标签: ruby-on-rails-4 rails-migrations drop-table

在Rails 4文档(http://guides.rubyonrails.org/migrations.html#creating-a-join-table)中,我看到要删除表或连接表,可以在命令行中使用以下方法:

drop_tabledrop_join_table

然而,它进一步补充说,必须“提供一个块” - 我不知道执行中的样子。

无论这里是我的问题:如何删除表或删除连接表?

另外,当我说drop时,我的意思是从我的数据库中删除它。我知道我无法删除迁移,并且回滚迁移是不明智的,因为它会影响协作工作 - 所以我想避免删除迁移文件并尽可能地回滚迁移。

创建迁移以填充数据库时,我犯了一个错误。我知道如何修改表的列(添加新的,重命名和删除它们)。我只是不知道如何清除表格。

感谢您考虑我的问题。

我想从我的数据库中完全删除一个表。我的应用程序在Rails 4上运行。

1 个答案:

答案 0 :(得分:18)

drop_join_table方法在文档drop_join_table

中定义

需要表1,表2的名称。示例:您有两个名为categoriesproducts的表,以及名为categories_products的联接表<)

因此,使用您喜欢的任何名称创建一个迁移文件,然后编写代码以删除连接表::

def change
  drop_join_table :categories, :products 
end

您可以将其他选项传递给drop_join_table方法,这些选项与create_join_table相同。看看这个方法可以看到更多选项。

示例,如果您的联接表没有遵循惯例的名称,例如categorization,您可以指定它:

def change
  drop_join_table :categories, :products, table_name: categorization 
end

要删除表格,使用drop_table方法更简单:

def change
  drop_table :table_name
end

其他选项可以传入drop_table方法,例如create_table方法的选项