5

我为我的 Rails 应用程序使用了两个不同的数据库:MongoDB分别MsSQL使用Mongoidactiverecord-sqlserver-adapter适配器。一切都很好,但是生成模型时出现了问题。

问题是“我如何生成相关MongoDBMsSQL不同的模型?”

例如:我想生成People模型相关MongoIDAnimal模型MsSQL。当我使用命令生成时:rails g model Animal name:string它会生成与 mongoid 相关的模型。如何使用 ActiveRecord 生成与 MsSQL 相关的模型 Animal。
请帮我。谢谢

4

3 回答 3

3

基于在Mongoid 安装后使用 Active Record 生成器?我相信这应该有效:

rails g active_record:model Animal name:string
于 2013-06-18T19:17:18.977 回答
1

首先让我检查一下我是否正确理解了您的问题:

您有 2 个数据库和一系列模型/迁移,并且您想要一种方法来告诉 Rails 在运行迁移和使用您的模型访问数据库时使用哪个数据库?

如果我在正确的区域,那么您需要在迁移中添加一个方法,该方法会覆盖ActiveRecord::Migrationconnection()中的默认方法。

def connection
  ActiveRecord::Base.establish_connection(:conn_name).connection
end

:conn_name您在 config/database.yml 中为连接设置提供的名称在哪里

在您的模型中添加该行

establish_connection :conn_name

到模型文件的顶部,模型现在将知道要连接到哪个数据库。

于 2013-06-18T12:53:27.877 回答
0

因此,我过去处理此问题的快速而肮脏的方法(由于我的开发团队出于遗留原因将 mongoid 保留在 gem 文件中)是在必须进行迁移时注释掉 mongoid 运行捆绑包、生成和运行您迁移然后取消注释并再次运行捆绑。这远非最佳实践,但它应该有效。

于 2016-10-14T18:28:18.383 回答