【发布时间】:2014-06-17 07:34:56
【问题描述】:
我一直在我的机器上本地运行我的应用程序,并认为我已准备好将其推送到 Heroku。 (我有 SQL 用于开发/测试,但 PG 用于推荐。)我遇到的问题是,在过去,我有多个迁移创建了一个名为 companies 的设计模型,手动添加了属性company_id 到我的设计模型 users,将 companies 重命名为 accounts,并重命名 company_id到 account_id。当时进行所有这些迁移时,我的架构很好地反映了正在发生的事情。但是,现在我要同时为 Heroku 运行所有这些迁移,事情变得有点棘手。
具体错误:
1)
运行 rake db:migrate 附加到终端... up, run.4418 迁移到 AddCompanyIdToUsers (20140521170926) 耙中止! NameError: 未初始化的常量 AddCompanyIdToUsers
2)
rake 中止! ActiveRecord::DuplicateMigrationNameError: 多个迁移的名称为 AddAccountIdToUsers
具体解决方案
根据对其他 SO 问题的回答,我尝试了不同的方法:我尝试销毁上述迁移,因为它们不再相关。我尝试将迁移回滚到之前的迁移,删除问题迁移文件,然后再次迁移数据库。我还尝试在迁移中重命名迁移文件和/或类名和/或在迁移中重命名模型名称。一切都无济于事。
相关迁移
20140521170926_add_company_id_to_users.rb
class AddCompanyIdToUsers < ActiveRecord::Migration
def change
add_column :users, :account_id, :integer
end
end
20140527013603_rename_companies_to_accounts.rb
class RenameCompaniesToAccounts < ActiveRecord::Migration
def change
rename_table :companies, :accounts
end
end
20140610013557_remove_account_id_from_users.rb
class RemoveAccountIdFromUsers < ActiveRecord::Migration
def change
remove_column :users, :account_id, :integer
end
end
20140614021611_add_account_id_to_users.rb
class AddAccountIdToUsers < ActiveRecord::Migration
def change
add_column :users, :account_id, :integer
end
end
如您所见,我对我的一些决定有点犹豫不决,但认为执行上述迁移会更干净,但它似乎并不像我喜欢的那样顺利。如果需要,我可以使用我的架构进行更新。提前感谢您的帮助!
【问题讨论】:
标签: ruby-on-rails heroku devise