2015-11-07 142 views
1

这是迁移文件迁移列 - Rails的

class CreateComments < ActiveRecord::Migration 
     def change 
     create_table :comments do |t| 
      t.string :name 
      t.string :email 
      t.text :body 
      t.boolean :spam, default: false 
      t.references :post, index: true, foreign_key: true 
      t.references :user, index: true, foreign_key: true 

      t.timestamps null: false 
     end 
     end 
    end 

没有在Heroku因为某些原因产生的user_id列。在Heroku

Comment(id: integer, name: string, email: string, body: text, post_id: integer, created_at: datetime, updated_at: datetime) 

我已经试过heroku restart

实际的表可能会更新架构或东西,但什么都没有。

在我的本地环境中,我可以看到并可以使用user_id列。

回答

1

我想,而不是创建新的迁移你修改了一个现有的。

你需要做的是rollback迁移Heroku而不是migrate它再次。

请记住,您将不得不为您的回购创建两个提交,其中一个需要进行修改并与之配合。这是因为在回滚迁移时添加的列应该丢失,或者尝试删除不存在的列。

所以该过程如下:

  1. 从迁移取出修改。提交更改。
  2. heroku run rake db:rollback STEP=1或者您需要的很多步骤。
  3. 再次添加修改。提交更改。
  4. heroku run rake db:migrate
0

请尝试以下 - 我假设是你最后一次迁移 -

heroku run rake db:rollback,回退最后迁移

heroku run rake db:migrate运行,移民再次