是否可以在 Rails 应用程序中使用 2 种类型的数据库?
我正在使用 2 个数据库 - Postgres存储可能变化不大的数据,而MongoDB 存储动态变化的数据。
这是有效的方法吗?是否可以在这两个数据库之间连接并在单个 Rails 应用程序中运行?
请纠正,如果我错了。
问候, 巴兰
是否可以在 Rails 应用程序中使用 2 种类型的数据库?
我正在使用 2 个数据库 - Postgres存储可能变化不大的数据,而MongoDB 存储动态变化的数据。
这是有效的方法吗?是否可以在这两个数据库之间连接并在单个 Rails 应用程序中运行?
请纠正,如果我错了。
问候, 巴兰
是的,这是可能的,这是我的旧代码中的一个示例(但这里我们对两个数据库都使用了 mysql,但我认为你可以得到一个想法)
在 database.yml 文件中定义两个数据库
development: &defaults
adapter: mysql
encoding: utf8
database: DB1
enable_call: true
username:
password:
host:
portal_development: &defaults
adapter: mysql
encoding: utf8
database: DB2
enable_call: true
username:
password:
host:
在您的模型中必须将模型与上述数据库相结合
portal_base.rb
class PortalBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "portal_#{Rails.env}"
def self.table_name_prefix
"DB1."
end
end
default_base.rb
class DefaultBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "#{Rails.env}"
def self.table_name_prefix
"DB2."
end
end
并相应地推导出您的模型
class Client < PortalBase
#code
end
希望你现在有一个想法:)
找到解决方案:
我们可以使用mongoid
gem 来实现这一点。
安装步骤
1)通过添加"gem mongoid"
Gemfile并运行bundle
命令来安装mongoid
2)通过输入生成mongoid配置,这将在文件附近"rails g mongoid:config"
创建一个配置文件,您可以在此文件中将配置添加到Mongo服务器。mongoid.yml
database.yml
注意:添加 Mongoid 后,所有创建的模型都会默认为 MongoDB 创建,您可以指定--orm
选项为 Postgres 生成模型。