【问题标题】:rake db:migrate doesn't work (Rails 4.0.4)rake db:migrate 不起作用(Rails 4.0.4)
【发布时间】:2014-04-30 05:42:25
【问题描述】:

我在 Rails 4.0.4 / Ruby 2.1.0 上有一个新应用程序。我做的第一件事是添加 Devise gem。当我想运行 rake db:migrate 时,它​​什么也不做。没有错误,但没有执行迁移。

你能帮我处理这个案子吗?我找不到问题出在哪里。

谢谢! 彼得

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 rake rails-migrations


    【解决方案1】:

    好的,所以问题是设计生成器生成了带有迁移的“.txt”文件,而不是“.rb”文件。奇怪,但更改扩展名解决了它。

    【讨论】:

    • 您能分享一下您的railsdevise 的版本吗?奇怪的是,您使用设计 generator 得到了 .txt
    • Rails 是 4.0.3,Devise 是 3.2.4。
    【解决方案2】:

    我和 Petr 遇到了同样的问题,我想我找到了原因。出于某种原因,当我运行“rails g devise User”时,它创建了一个迁移(db/migrate/[timestamp]_devise_create_users.rb)。这就是它的假设,但经过进一步检查,迁移最后缺少“.rb”。所以它看起来像(db/migrate/[timestamp]_devise_create_users)。当我在最后添加 .rb 并运行“rake db:migrate”时,它就像一个魅力。我不知道为什么rails最后没有附加'.rb'。希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      安装 devise gem 后,您必须执行以下操作

      1. rails generate devise:install

      生成器将安装一个初始化程序,它描述了所有设计的配置选项,您必须查看它。完成后,您就可以使用生成器将 Devise 添加到您的任何模型中了

      1. rails generate devise <model>

      这是生成迁移的步骤。例如,如果你想为用户模型添加设计,你应该这样做

      rails generate devise User
      

      所以它会生成一个迁移来将设计相关的列添加到用户表中

      【讨论】:

      • 我当然这样做了。但是这样做之后,命令“rake db:migrate”就不起作用了。
      • 你看到新的迁移了吗?
      • 是的,我看到了新的迁移文件。但是在“rake db:migrate”之后什么也没发生,模式文件仍然是空的,并且 rails 引发错误“找不到表'users'”,因为它不存在。问题出在 rake 命令中,但我不知道如何解决。
      猜你喜欢
      • 2012-04-08
      • 2018-01-12
      • 2015-02-20
      • 1970-01-01
      • 2016-11-19
      • 2012-05-15
      • 1970-01-01
      相关资源
      最近更新 更多