Rails有两个不同的数据库

时间:2013-06-18 11:22:23

标签: ruby-on-rails sql-server mongodb mongoid tiny-tds

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

问题是“如何以不同的方式生成与MongoDBMsSQL相关的模型?”

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

3 个答案:

答案 0 :(得分:3)

基于Using Active Record generators after Mongoid installation?我认为这应该有效:

rails g active_record:model Animal name:string

答案 1 :(得分:1)

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

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

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

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

其中:conn_name是您在config / database.yml

中提供连接设置的名称 在模型中

添加行

establish_connection :conn_name

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

答案 2 :(得分:0)

所以我过去处理这个问题的快速而肮脏的方式(由于我的开发团队因为遗留原因而将mongoid保留在gem文件中)是当你需要进行迁移运行捆绑时注释掉mongoid,生成并运行迁移,然后取消注释并再次运行bundle。这远非最佳实践,但应该有效。