rake db:迁移不推动迁移

0 ruby-on-rails

我正在使用教程学习Rails,在Nitrous.io中工作并修改了我的迁移文件以创建模型之间的关系.这是一个简单的时间跟踪应用程序.其中一个已修改的迁移文件的示例如下:

class CreateWorks < ActiveRecord::Migration
  def change
    create_table :works do |t|
      t.integer :project_id
      t.integer :user_id
      t.datetime :datetimeperformed
      t.decimal :hours, precision: 5, scale: 2
      t.timestamps
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

项目ID,用户ID,datetimeperformed和hours都是新的,但是当我运行rake db:migrate将它们推送到schema.rb时,没有任何反应.它暂停然后给我一个新的提示,但schema.rb文件没有被修改.

我已经得出结论,由于某种原因,迁移不会通过,但不知道为什么.有什么明显的东西我做错了吗?谢谢你的帮助.

vee*_*vee 6

更改未获取的原因是您正在修改版本号小于您的版本号的现有迁移schema.rb.

如果要向现有表添加列,可以创建新的迁移:

rails g migrate add_project_user_performance_datetime_to_work
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个文件db/migrate/...add_project_user_performance_datetime_to_work.rb.修改此文件以在此处定义列.

class AddProjectUserPerformanceDatetimeToWork < ActiveRecord::Migration
  def change
    add_column :works, :project_id, :integer
    add_column :works, :user_id, :integer
    add_column :works, :datetimeperformed, :datetime
  end
end
Run Code Online (Sandbox Code Playgroud)

然后运行rake db:migrate应该接受此更改.