Rails阻止db:从运行子文件夹迁移

时间:2018-04-19 12:15:29

标签: ruby-on-rails ruby database migration

对于我的迁移,我有一个类似的结构

  • 分贝/迁移
    • xx_create_sites.rb
    • 站点
      • xx_create_users.rb

site目录包含只需要在单独的数据库上运行的迁移。我有一个工作rake任务

desc "Migrate the database through scripts in db/migrate/site."
namespace :db do

  task :sites => :environment do
    @sites = Site.all()
    for site in @sites do
        conn_config = ActiveRecord::Base.connection_config
        conn_config[:database] = site.id
        ActiveRecord::Base.establish_connection conn_config
        ActiveRecord::MigrationContext.new("db/migrate/site/").migrate
    end
  end
end

但是,如果我为默认数据库运行bin/rails db:migrate,它还会将站点目录迁移到整个数据库...如何防止迁移此文件夹?

1 个答案:

答案 0 :(得分:1)

Rails希望迁移位于db/migrate,并且在运行它们时会覆盖该目录中的所有内容(请参阅:the docs)。

如果您希望某些迁移由于某种原因而保留,则需要将其移出db/migrate并让您的自定义佣金任务指向该目录。