无法从rails app中删除schema.rb中的表

时间:2016-09-11 23:05:36

标签: ruby-on-rails ruby-on-rails-4 activerecord rubygems schema.rb

我使用Rails 4.0和Ruby 2.3.0

我有一个小型Rails应用程序。起初我想根据他/她注册的内容为每个用户分配不同的角色。所以我尝试了https://github.com/MartinJNash/Royce

中的“Royce”宝石

在看到它对我的要求太复杂之后我卸载了它。

然后我尝试了“简单角色”宝石,看看它是如何工作的https://github.com/stanislaw/simple_roles。我也卸载了。当我在我的应用程序中拥有这2个宝石时,我运行了db:migrate。

现在我不想在schema.rb中使用这两个宝石中的相应表格。它并不完全干扰我的应用程序,但我想删除它们。

以下是我的schema.rb文件

{}

即使我已经卸载了2个角色-gems,每次运行rake db:migrate时,我都会得到上面的架构。

我在我的应用中仅使用“会话”和“供应商”表。 知道我应该做些什么来摆脱这些不需要的表吗?

2 个答案:

答案 0 :(得分:0)

查看create view UsersWithAddr as select u.f1, u.f2, ..., a.f1, a.f2,... from Users u join Addresses a on a.ID = u.AddrID; create view VenuesWithAddr as select v.f1, v.f2, ..., a.f1, a.f2,..., c.Latitude, c.Longitude from Users u join Addresses a on a.ID = u.AddrID join Coords c on c.AddrID = a.ID; 目录。查找并删除与这些gem相关的迁移。

删除迁移文件后,您可以再次运行app/db/migrate。然后运行rake db:migrate并检查新生成的rake db:schema:dump文件,以确保您没有为您删除的宝石保留任何表格。

答案 1 :(得分:0)

首先检查表格是否存在... 在rails控制台 ...

##to view all tables 
ActiveRecord::Base.connection.tables

我使用rails console直接删除表格...

    ActiveRecord::Base.connection.execute("drop table table_name")
    ###========OR===============
    ActiveRecord::Migration.drop_table(:table_name)
   ###=========OR===============
   ActiveRecord::Migration.drop_table("table_name")     

然后,删除迁移文件或通过更改时间戳再次重命名再次运行rake db:migrate

希望有所帮助:)