ruby-on-rails - 是否可以在特定环境的 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
但这意味着test
env 将具有与其他环境完全不同的架构。
反正有一个特定于环境的架构吗?
还是有其他完全不同的方式我应该接近这个?
解决方案
推荐阅读
- airflow - 气流错误回调“on_failure_callback”未执行函数中的所有行
- asp.net - VB.NET 连接字符串 ADODB 连接 (Web.Config)
- encoding - 如何根据 Firebird 数据库编码检索 CHAR 和 VARCHAR 字段定义
- javascript - 将鼠标悬停在 X 上时,如何仅在单个列表中显示 X?
- r - 使用 r-markdown for PowerPoint 的语法突出显示和样式设置
- java - 我可以直接从 shell 以调试模式运行 Java 应用程序吗?(不是来自 IDE)
- kotlin - 在 kotlin 中如何简化?
- python - 为什么当bid = 3 且highest_bid = 2000 时print(bid > high_bid) 返回true?
- c++ - C++20 中的 requires-expression 可以是隐式转换为 bool 的类型吗?
- java - 布尔递归方法调用是否总是需要返回语句?