浏览 5147 次
锁定老帖子 主题:rails应用与多数据库的连接
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-18
最后修改:2011-02-18
1、配置database.yml development: adapter: mysql encoding: utf8 database: myapp username: root password: host: localhost test: adapter: sqlite3 database: db/test.sqlite3 pool: 5 timeout: 5000 production: adapter: mysql encoding: utf8 database: myapp username: root password: host: localhost typo: adapter: mysql database: typo username: root password: host: localhost 说明: 1、typo是外部数据库,这是一个rails安装之后就存在的一个实例应用的库; 2、其他的development、test、production都是缺省的主数据库,这是缺省配置; 3、yml文件的书写方式非常严格,typo描述部分的下面各个参数必须采用tab的方式对齐,在netbeans中可以识别此格式,如果格式不对,将提示错误。 二、编写一个外部库的基础模型类 创建external_data.rb这个模型类 class ExternalData < ActiveRecord::Base self.abstract_class = true establish_connection :typo end 说明: 1、self.abstract_class = true,表示这个模型类不会与库中的任何表有关系,也就是一个抽象的类。 2、establish_connection :typo,就是配置连接 三、编写一个具体的模型类 下面是typo库的表 +---------------------+ | Tables_in_typo | +---------------------+ | articles | | articles_categories | | blacklist_patterns | | categories | | comments | | page_caches | | pages | | pings | | resources | | schema_info | | sessions | | settings | | sidebars | | trackbacks | | users | +---------------------+ 我们随便选择一个如,pages,实现它的模型; 创建文件page.rb,内容如下: class Page<ExternalData end 说明: 1、关键在于page这个类是从刚才定义的抽象类ExternalData中继承而来,有一个好处是这个抽象类下衍生出来的各个模型类可以共用连接池,减少数据库连接的消耗。 2、这种采用继承的方式非常方便创建其他表对应的类,不需要在模型中重复书写establish_connection :typo这样的语句。比如对settings这个表,创建setting.rb模型类文件,代码如下: class Setting<ExternalData end 与缺省库中的模型操作起来一样,不一样的就是父类不同而已。 四、测试看看是否成功 ruby script/console >> ExternalData => ExternalData(abstract) >> Page => Page(id: integer, name: string, title: string, body: text, body_html: text, text_filter: string, user_id: integer, created_at: datetime, updated_at: datetime) >> Setting => Setting(id: integer, name: string, value: string) 没有问题。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-28
This is helpful to me.
Thanks for your article. |
|
返回顶楼 | |
发表时间:2011-03-30
|
|
返回顶楼 | |
发表时间:2011-03-30
最后修改:2011-03-30
文档上推荐的写法很麻烦
ActiveRecord::Base.establish_connection( :adapter => "mysql", :host => "localhost", :username => "myuser", :password => "mypass", :database => "somedatabase" ) 没想到这个方法还能这么用 |
|
返回顶楼 | |