Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails阻止db:从运行的子文件夹迁移_Ruby On Rails_Ruby_Database_Migration - Fatal编程技术网

Ruby on rails Rails阻止db:从运行的子文件夹迁移

Ruby on rails Rails阻止db:从运行的子文件夹迁移,ruby-on-rails,ruby,database,migration,Ruby On Rails,Ruby,Database,Migration,对于我的迁移,我有一个这样的结构 数据库/迁移 xx_创建_站点.rb 场地 xx_创建_用户.rb 站点目录包括只需要在单独的数据库上运行的迁移。我有一个工作任务为这些 desc "Migrate the database through scripts in db/migrate/site." namespace :db do task :sites => :environment do @sites = Site.all() for site in

对于我的迁移,我有一个这样的结构

  • 数据库/迁移
    • xx_创建_站点.rb
    • 场地
      • xx_创建_用户.rb
站点
目录包括只需要在单独的数据库上运行的迁移。我有一个工作任务为这些

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
,它也会将站点目录迁移到整个数据库中。。。如何防止此文件夹被迁移?

Rails希望迁移位于
db/migrate
中,并且在运行它们时,它会将该目录中的所有内容都全局化(请参阅:)


如果出于某种原因希望使某些迁移保持本地化,则需要将它们移出
db/migrate
,并使自定义rake任务指向该目录。

这将在子文件夹中运行迁移。我需要忽略一个子文件夹。我很确定它会覆盖
db/migrate
中的每个文件,所以在它之外选择一个不同的文件夹dir@Anthony这很有效,谢谢。你愿意回答吗?