是否可以在特定环境的 rails 中使用单独的模式

问题描述

导轨 6

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

所以我有

class ModelA # 带有迁移和架构 class ExternalDB1::ModelB# 没有本地迁移,不在架构中 class ExternalDB2::ModelC# 没有本地迁移,不在架构中

这工作正常,但在测试环境中,我们想假设 class ExternalDB1::ModelBclass 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

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

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

或者我应该用完全不同的方式来解决这个问题吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)