搜虎精品社区

标题: ROR项目中连接多个数据库的方法!! [打印本页]

作者: byebyeonce    时间: 2008-10-15 09:41
标题: ROR项目中连接多个数据库的方法!!
首先打开config目录中的database.yml文件,配置要访问的另外一个数据库的信息。

other_db_name_connection:   
  adapter: mysql   
  database: other_db_name   
  username: root   
  password:   
  encoding: utf8   
  host: localhost
这个数据库可以和以前的数据库在同一台机器上,也可以在其他的机器上,在host里边可以完全配置。

然后生成一个继承ActiveRecord::Base的抽象类

class External < ActiveRecord::Base   
  self.abstract_class = true   
  establish_connection :other_db_name_connection   
end
现在这个继承类重写了
ActiveRecord::Base 的数据库链接,而这个链接就是我们在配置文件里边定义的。
dupal_database,那么这个类的代码就要进行部分的改变。
如下:

class DupalDatabase::External < ActiveRecord::Base     
   self.abstract_class = true     
   establish_connection :other_db_name_connection     
end
然后再新建一个model文件,生成一个新的model类。这个新的model类继承了上边的抽象类
将继承上边的model类和上边的这个抽象类放到一个包里。按照上边的,我们暂时放到dupal_database

class DupalDatabase::Stock < DupalDatabase::External   
  self.table_name =\'day_info\'   
end
如果利用其它系统的数据库,或者其他表的名字会变,那么最好自定义表名

最后我们来调用访问
访问的时候如果你把model放到其他的目录里边比如上边的目录,那么访问起来就是:

stock =DupalDatabase::Stock.find(:all)   
stock= DupalDatabase::Stock.new()
现在rails当中就可以完全的访问不同的数据库了,这种方式用过可以应用到rails的分布式架构中。。
作者: icefoxit    时间: 2008-10-15 10:31
好东西!学习了!谢谢楼主
作者: hdot    时间: 2008-10-16 02:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: pdw888    时间: 2008-10-17 20:09
8 8 还要努力啊~
什么都看不懂




欢迎光临 搜虎精品社区 (https://souho.net/) Powered by Discuz! X3.2