我正在使用教程学习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文件没有被修改.
我已经得出结论,由于某种原因,迁移不会通过,但不知道为什么.有什么明显的东西我做错了吗?谢谢你的帮助.
更改未获取的原因是您正在修改版本号小于您的版本号的现有迁移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应该接受此更改.
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |