可以在Rails中配置模型以从不同的数据源中提取数据吗?

时间:2013-02-26 21:53:35

标签: mysql ruby-on-rails ruby-on-rails-3 mongodb model

我们的应用程序需要从不同的数据源中提取数据:一个是MySQL数据库,另一个是Mongo数据库。

是否可以配置模型从不同的数据源提取数据并利用Rails.cache快速查询?现在,Rails中的配置文件似乎只支持单个数据源。

我们正在使用Rails 3.0.6。

2 个答案:

答案 0 :(得分:2)

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

现在我们将User模型连接到mysql:

   class User < ActiveRecord::Base
     #Active record by default connects with the primary database configuration
   end

现在我们将产品型号连接到Mongo:

   class Product
     include MongoMapper::Document
   end

你还需要在config / intializers / mongo.rb初个化mongo setttings

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

答案 1 :(得分:0)

对于MySQL:

class Example < ActiveRecord::Base
  ...
end

对于Mongo:

class ExampleTwo
  include MongoMapper::Document
  ...
end