1

是否可以在 Rails 应用程序中使用 2 种类型的数据库?

我正在使用 2 个数据库 - Postgres存储可能变化不大的数据,而MongoDB 存储动态变化的数据。

这是有效的方法吗?是否可以在这两个数据库之间连接并在单个 Rails 应用程序中运行?

请纠正,如果我错了。

问候, 巴兰

4

2 回答 2

0

是的,这是可能的,这是我的旧代码中的一个示例(但这里我们对两个数据库都使用了 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

希望你现在有一个想法:)

于 2012-12-31T11:51:06.430 回答
0

找到解决方案:

我们可以使用mongoidgem 来实现这一点。

安装步骤

1)通过添加"gem mongoid"Gemfile并运行bundle命令来安装mongoid

2)通过输入生成mongoid配置,这将在文件附近"rails g mongoid:config"创建一个配置文件,您可以在此文件中将配置添加到Mongo服务器。mongoid.ymldatabase.yml

注意:添加 Mongoid 后,所有创建的模型都会默认为 MongoDB 创建,您可以指定--orm选项为 Postgres 生成模型。

于 2013-01-16T12:23:58.133 回答