我为我的Rails应用程序使用了两个不同的数据库:MongoDB
和MsSQL
分别使用Mongoid
和activerecord-sqlserver-adapter
适配器。一切都很好,但生成模型时出现问题。
问题是“如何以不同的方式生成与MongoDB
或MsSQL
相关的模型?”
例如:我想生成People
模型与MongoID
和Animal
模型与MsSQL
相关联。当我使用命令rails g model Animal name:string
生成时,它会生成与mongoid相关的模型。如何使用与MsSQL相关的ActiveRecord生成模型Animal。
请帮帮我。
谢谢
答案 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。这远非最佳实践,但应该有效。