是否有办法在开发数据库上运行迁移。
我使用Heroku Connect将Postgres中的某些表与Salesforce中的某些表同步。
目前我做了一些黑客攻击,我在Postgres上进行了一些镜像,我正在与Salesforce同步。
然后我删除迁移文件(将它们放在一个单独的文件夹中),然后我推送到heroku。这需要完成,因为迁移文件会混淆heroku连接的工作方式。只是为了上下文。模型看起来像这样。
class MyModel < ApplicationRecord
self.table_name = 'salesforce.someTable__c' unless Rails.env.development?
end
因此无法真正为db。{/ p>中的my_models
表进行迁移
问题是我必须改变同步的性质,我需要重新启动这些文件,回滚数据库,更新这些原始迁移文件,迁移数据库,然后删除那些迁移文件。
不是最好的解决方案。
回到这个问题。有没有办法在开发上运行迁移,这样当我在生产上运行迁移时,它将跳过那些仅用于开发的迁移。类似的东西:
if Rails.env.development?
...
else
...
end
或
if Rails.env.production?
...
else
...
end
答案 0 :(得分:0)
Heroku维护一个名为RAILS_ENV
的环境变量,同样的变量也由开发中的Rails维护,所以你可以去实现它。
allowed_env = 'development'
if ENV['RAILS_ENV'] == allowed_env
create_table :users do |t|
end
end
On Heroku RAILS_ENV
设置为staging
或production
。