首页 > 解决方案 > 是否可以在特定环境的 Rails 中有单独的模式

问题描述

导轨 6

我有一个 Rails 应用程序,它与许多数据库交互,包括一个由应用程序拥有的数据库和其他几个远程托管的,其内容不在应用程序模式中。

所以我有

class ModelA# 有迁移并且在模式中 class ExternalDB1::ModelB# 没有本地迁移,不在模式中 class ExternalDB2::ModelC# 没有本地迁移,不在模式中

这很好用,但在测试环境中,我们想假装它class ExternalDB1::ModelB只是class ExternalDB2::ModelC普通的本地模型,所以我们不需要在测试期间访问远程数据库。所以在这种情况下,他们会得到一个工厂,但是,工厂想要一个表来保存它们(我们正在对这些对象进行复杂的多请求集成测试,所以我认为 skip_create 不会起作用)

我的想法是尝试做类似的事情

class CreateExternalDBTables < ActiveRecord::Migration[6.0]
  def change
    return unless Rails.env == "test" 

    create_table :external_class_ones do |t|
      t.string :name

      t.timestamps
    end


    create_table :external_class_twos do |t|
      t.string :name

      t.timestamps
    end
  end
end

但这意味着testenv 将具有与其他环境完全不同的架构。

反正有一个特定于环境的架构吗?

还是有其他完全不同的方式我应该接近这个?

标签: ruby-on-railsruby-on-rails-6rails-migrations

解决方案


推荐阅读