美创科技技术社区

注册

 

发新话题 回复该主题

ruby ActiveRecord 连接多个数据库的方法 [复制链接]

1#

  默认情况下ActiveRecord只支持连接一个数据库即使用以下方法(以连接ORACLE为例):

require ‘yaml’
require ‘activerecord’

tmp=”"
log = File.open(“config.yaml”,”r”)
yp = YAML::load_documents( log ) { |doc|
  tmp=doc
}
ActiveRecord::Base.establish_connection(
:adapter  => tmp['adapter'],
:database => tmp['database'],
:username => tmp['username'],
:password => tmp['password'],
:host     => tmp['host']
)
class ActiveTest < ActiveRecord::Base
self.table_name = “MC$TEST”
end

有些情况下我们会需要连接2个或2个以上的数据库,这时候最容易想到的办法是关闭上一个连接的数据库重新连接新的数据库,可是如果频繁在两个数据库之间做查询这种方法的效率就非常低,下面是我的一个解决办法:

class DB1 < ActiveRecord::Base
  self.establish_connection(
    :adapter  => “数据库适配器”,
    :encoding => “字符编码集”,
    :database => “db1tnsname”,
    :username => “db1username”,
    :password => “db1password”,
    :host     => “db1tnsname”
  )
end

class DB2 < ActiveRecord::Base
  self.establish_connection(
    :adapter  => “数据库适配器”,
    :encoding => “字符编码集”,
    :database => “db2tnsname”,
    :username => “db2username”,
    :password => “db2password”,
    :host     => “db2tnsname”
  )
end

class DB1Table1 < DB1

end

class DB2Table1 < DB2

end

这样的话就可以同时使用两个库的表了,2个以上的库也类似,再加一个类即可。需要注意的是DB1中的表必须继承自DB1,DB2中的表必须继承自DB2,而不能再继承自ActiveRecord::Base了。

分享 转发
TOP
发新话题 回复该主题