我正在编写一个SaaS模型应用程序。
我的应用程序数据库由两个逻辑部分组成:
所有表都是由Rails迁移机制创建的。
我想将用户定义的表放在另一个目录中:
因此我可以在db/migrations/custom上执行svn:ignore,并且当我在客户端服务器上更新应用程序时,它只会更新应用程序表迁移。
有什么办法可以实现这一目标吗?
最佳答案
任务rake db:migrate
具有用于迁移的硬编码路径。但是您可以创建自己的瑞克任务。例如,使用以下内容创建lib/tasks/custom_db_migrate.rake
:
namespace :db do
task :custom_migrate => :environment do
ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
ActiveRecord::Migrator.migrate("db/migrate/custom", ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
Rake::Task["db:schema:dump"].invoke if ActiveRecord::Base.schema_format == :ruby
end
end
现在,您可以运行
rake db:custom_migrate
来运行位于db/migrate/custom
中的迁移。但它不会使用从默认路径进行的迁移。您可能需要read the source code进行ActiveRecord迁移。
关于ruby-on-rails - Rails : How to create migration in subdirectory with Rails?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635757/