我们的应用程序需要从不同的数据源中提取数据:一个是 MySQL 数据库,另一个是 Mongo 数据库。
是否可以配置模型以从不同的数据源中提取数据并利用 Rails.cache 进行快速查询?目前,Rails 中的配置文件似乎只支持单一数据源。
我们在 Rails 3.0.6 上。
我们的应用程序需要从不同的数据源中提取数据:一个是 MySQL 数据库,另一个是 Mongo 数据库。
是否可以配置模型以从不同的数据源中提取数据并利用 Rails.cache 进行快速查询?目前,Rails 中的配置文件似乎只支持单一数据源。
我们在 Rails 3.0.6 上。
Rails 提供了使用多个数据库的约定。让我向您展示如何使用 Mango 和 Mysql。
将 mysql 视为主数据库。所以 mysql 的配置进入 config/database.yml
config/database.yml
development:
#dev config goes here
test:
#test config goes here
production:
#production config goes here
现在考虑 Mongo。在 config/mongo_database.yml 中为 Mongo 放置另一个配置
config/mongo_database.yml
development:
#dev config goes here
test:
#test config goes here
production:
#production config goes here
现在我们将用户模型连接到 mysql:
class User < ActiveRecord::Base
#Active record by default connects with the primary database configuration
end
现在我们将 Product 模型连接到 Mongo:
class Product
include MongoMapper::Document
end
您还需要在 config/initializers/mongo.rb 中初始化 mongo 设置
config/intializers/mongo.rb
Mongoid.configure do |config|
config = YAML.load_file(Rails.root.join("config", "mongo_database.yml"))[Rails.env]
host = config["host"]
config.master = Mongo::Connection.new.db(config["database"])
end
是的。
对于 MySQL:
class Example < ActiveRecord::Base
...
end
对于蒙哥:
class ExampleTwo
include MongoMapper::Document
...
end