删除Rails 4中的模型和迁移文件

5

我正在尝试为我的 Rails 博客添加标签模型。但是我错误地生成了一个名为 "Tags.rb" 的模型,而不是 "Tag.rb"。在阅读指南后,我意识到将 "tag" 变成复数形式是一个模型方面的错误。于是,我使用回滚操作来撤销迁移。

  rake db:rollback 

然后

  rails destroy model Tags.rb 

这是我得到的结果

  invoke  active_record
  remove    /home/migration/templates/create_table_migration.rb
  remove    app/models/tags.rb.rb
  invoke    test_unit
  remove      test/models/tags.rb_test.rb
  remove      test/fixtures/tags.rbs.yml

当我返回到模型文件夹时,它仍然存在。 请帮忙 :)
6个回答

4

只需

rails destroy model Tag

是的,刚刚运行了那个。结果一样。我回到文件中,tags.rb仍然在模型中。 - nadia
我尝试使用“rails g model --force Tag”来覆盖它,但它一直告诉我:“未为必需参数'name'提供值”。 - nadia

1
尝试这个。
bundle exec rake db:rollback

然后删除您的模型,如下:

rails destroy model <model_name>

现在完全删除。


完美,正是我所寻找的,它像魔法一样运行!谢谢Antony。 - Gregoire Mulliez

1

尝试使用复数标签而不是额外的.rb文件,比如

rails destroy model Tags

希望这能有所帮助


1
你可以手动删除文件,或者只需手动删除“s”即可。

0

您可以删除迁移文件夹中的迁移文件和模型文件夹中的模型,然后再创建您想要的新文件。

您需要运行这些命令。

rails g model tag

然后迁移数据库

rake db:migrate

0
首先,在使用“rails generate model”生成Rails模型时,不要在模型名称后面添加“.rb”。Rails会自动添加它,所以如果您自己添加了“.rb”,那么您最终会得到一个名为“Tag.rb.rb”的无效模型。
您正在使用“Tags.rb”运行删除生成器。您是否最初使用“rails generate model Tags.rb”生成了该模型?如果是的话,则运行“rails destroy model Tags.rb”将希望删除所有文件,但由于模型名称无效,因此可能无法按预期工作(您的用例超出了生成器的预期用例)。如果您最初使用“rails generate model Tags”生成了模型,则运行“rails destroy model Tags”应该可以工作。
如果您最初调用了“rails generate model Tags.rb”,并且运行删除命令不起作用(这在理解上是可以理解的,因为“Tags.rb”是一个无效的名称——如果生成器最初禁止您生成一个“Tags.rb.rb”文件就好了,但您不能拥有所有的东西):
  1. 如果你可以承受破坏数据,重新运行所有迁移的后果,那么简单的解决方案是手动删除添加的文件,销毁数据库并重新运行所有迁移。然后你可以使用 rails generate model Tag 添加正确的模型。
  2. 如果你不能承受破坏数据,那么你需要手动在迁移文件夹中找到问题迁移,在该迁移上运行 down 命令,然后手动删除该迁移文件和所有其他文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接