ruby-on-rails - Rails : How to create migration in subdirectory with Rails?

标签 ruby-on-rails activerecord ruby-on-rails-3 rails-migrations

我正在编写一个SaaS模型应用程序。
我的应用程序数据库由两个逻辑部分组成:

  • 应用程序表-例如用户,角色...
  • 用户定义的表(他可以从UI级别生成它们)对于每个应用程序实例
  • 可以有所不同

    所有表都是由Rails迁移机制创建的。
    我想将用户定义的表放在另一个目录中:
  • 数据库/迁移-应用程序表
  • db/migrations/custom-用户
  • 生成的表

    因此我可以在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/

    相关文章:

    ruby-on-rails - 如何在 Rails 中获取 link_to 输出一个 SEO 友好的 url?

    sql - “NOT IN”条件不适用于列表中的 'NULL'

    ruby-on-rails-3 - 尝试调试 ruby​​ 1.9.3p194 rails 3.2.7

    ruby-on-rails - 连接表上的 Default_scope

    ruby-on-rails - Rails 插入 action_name

    ruby-on-rails - has_many.size 大于 0 的 Rails?

    ruby-on-rails - 如何在 Active Admin 中为 Edit 和 New 设置页面标题?

    ruby-on-rails - 程序 'rails' 可以在以下包中找到 - 某些应用程序和 RVM 有问题吗?

    ruby-on-rails - Heroku 上的 Rails database.yml 文件的生产条目

    ruby-on-rails - 将两个 ActiveRecord 关联集合合并为单个关联集合