【问题标题】:Migration issue in railsRails 中的迁移问题
【发布时间】:2016-10-13 11:22:13
【问题描述】:

我愿意为我的应用程序创建一个新模型,即一个新表。我的应用程序已经有一个表,我想创建一个新表。但是在执行以下命令以创建新表后运行rake db:migrate 命令时遇到问题。

rails g model information age:string name:string

在运行rake db:migrate 命令时,系统显示以下错误消息:

不知道如何构建任务 db:migrate

最终没有创建表。我正在使用 Postgresql。

迁移生成为:

class CreateInformation < ActiveRecord::Migration
 def change
  create_table :information do |t|
   t.string :age
   t.string :name

   t.timestamps null: false
  end
 end
end

schema.rb 文件没有变化。

【问题讨论】:

  • 您是在尝试创建模型还是迁移?
  • Rails 是否正确安装,您是否从 app 目录运行 rake?
  • 我正在尝试创建一个模型。实际上我需要创建一个新表。这就是我尝试生成一个新模型的原因。之后我运行了 rake db:migrate 命令,因为我在我的 pgadmin 中看不到任何新创建的表
  • 是的 ,,,rails 安装正确,因为我运行了另一个应用程序
  • 发布 rake db:migrate.Run 'rake -T' 的输出以查看任务。

标签: ruby-on-rails ruby ruby-on-rails-3 postgresql migration


【解决方案1】:

要创建模型,您需要在rails g 之后写model。 确保你在你的 rails app 文件夹中。如果您有一个同名的现有表,您可能希望先将其删除,然后再创建。

rails g model Information age name
#age and name will be string by default, so you can omit writing string

【讨论】:

  • 对不起,我运行正确。但这里是一个编辑错误。
  • 你有一个名为informations的现有表吗?
  • 当您在控制台中运行rake -T 时,您是否看到db:migrate,在您的rails 应用程序目录中?
  • 是的,我看到了踪迹
  • 酷。那我觉得没问题。您可能想要删除您的 Gemfile.lock 文件并运行 bundle install 再次创建。让我知道这是否有帮助?
【解决方案2】:

我认为您使用的命令与任何 rails 命令生成器都不匹配

rails g information age:string name:string 

如果你正在生成模型,它应该是

rails g model Information age:string name:string

我应该是大写(阅读Rails Conventions) 如果您正在尝试创建迁移,那么它应该是

rails g migration information age:string name:string

然后你运行 rake db:migrate 让它运行。

【讨论】:

    【解决方案3】:

    你在运行 rails5 吗?你的错误是这样的:

    不知道如何构建任务 db:migrate

    对于 rails 5 没有 rake 任务(改为 rails)你应该这样做

    bin/rails db:migrate
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      相关资源
      最近更新 更多