注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

Rails Activerecord连接多个数据库解决方案  

来自佳佳   2014-06-13 10:55:01|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  最近工作需要从A数据库迁移部分数据至B数据库,中间需要同时连接A,B两个数据库,故做了相关调研。从本质上来讲,ActiveRecord连接数据库是由ActiveRecord::Baseestablish_connection方法来处理,只要用不同的数据库配置来调用这个方法,就可以实现连接不同数据库具体操作过程很简单:

1.config/database.yml中设置多个数据库配置:

database_a: 
 adapter: mysql2 
 host: x.x.x.x 
 username: xxx 
 password: xxx 
 database: xxx 

database_b: 
 adapter: mysql2 
 host: x.x.x.x 
 username: xxx 
 password: xxx 
 database: xxx 

2.Model中新增对应model:

class MyModel < ActiveRecord::Base 
  self.abstract_class = true

  establish_connection :database_b

end 

其中self.abstract_class = true的作用是:

# Set this to true if this is an abstract class (see <tt>abstract_class?</tt>).

# If you are using inheritance with ActiveRecord and don't want child classes

# to utilize the implied STI table name of the parent class, this will need to be true.

# For example, given the following:

#

#   class SuperClass < ActiveRecord::Base

#     self.abstract_class = true

#   end

#   class Child < SuperClass

#     self.table_name = 'the_table_i_really_want'

#   end

#

#

# <tt>self.abstract_class = true</tt> is required to make <tt>Child<.find,.create, or any Arel method></tt> use <tt>the_table_i_really_want</tt> instead of a table called <tt>super_classes</tt>

3.controller中调用:require 'my_model' 

即可正常使用了。

  评论这张
 
阅读(1568)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016