Ped*_*olo 18 ruby migration directory ruby-on-rails
我和一位同事正在分享一些模型的不同项目.所以,我们通过git子模块共享模型.
此外,我们希望能够共享迁移:
通过这种方式,我的同事的迁移将在db/migrate/other_db我的项目的文件夹中.
如何配置rails迁移以在此额外文件夹中运行迁移?
Szy*_*był 28
在您的配置文件(所有环境的config/application.rb或仅适用于特定环境的config/environments/$(environment).rb)中添加以下行:
config.paths['db/migrate'] += 'db/migrate/other_db'
Run Code Online (Sandbox Code Playgroud)
如果你想更改默认的'db/migrate'路径(config.paths ['db/migrate']是一个默认包含一个字符串'db/migrate'的数组),请执行以下操作:
config.paths['db/migrate'] = ['db/my_migrate']
Run Code Online (Sandbox Code Playgroud)
这是默认的config.paths,我们也可以更改:
"app" => ["app"],
"app/assets" => ["app/assets"],
"app/controllers" => ["app/controllers"],
"app/helpers" => ["app/helpers"],
"app/models" => ["app/models"],
"app/mailers" => ["app/mailers"],
"app/views" => ["app/views"],
"lib" => ["lib"],
"lib/assets" => ["lib/assets"],
"lib/tasks" => ["lib/tasks"],
"config" => ["config"],
"config/environments" => ["config/environments"],
"config/initializers" => ["config/initializers"],
"config/locales" => ["config/locales"],
"config/routes" => ["config/routes.rb"],
"db" => ["db"],
"db/migrate" => ["db/migrate"],
"db/seeds" => ["db/seeds.rb"],
"vendor" => ["vendor"],
"vendor/assets" => ["vendor/assets"],
"vendor/plugins" => ["vendor/plugins"],
"config/database" => ["config/database.yml"],
"config/environment" => ["config/environment.rb"],
"lib/templates" => ["lib/templates"],
"log" => ["log/development.log"],
"public" => ["public"],
"public/javascripts" => ["public/javascripts"],
"public/stylesheets" => ["public/stylesheets"],
"tmp" => ["tmp"],
Run Code Online (Sandbox Code Playgroud)
Rails 5/6 更新;
Rails 5 建议在文件中设置其他迁移路径config/database.yml。很简单,看这个例子;
development:
migrations_paths:
- "db/migrate/other_db"
- "db/migrate/something_else"
Run Code Online (Sandbox Code Playgroud)
ActiveRecord::Migrator.migrations_path=将在 Rails 6 中弃用。