从第二个数据库中提取数据的有效方法?

Shp*_*ord 3 database postgresql ruby-on-rails multiple-databases

我们有一个主数据库,我们所有的应用程序都在这里.

但是有一个第二个数据库(从外部源更新),我希望能够连接到这个数据库以便从中提取数据.我不需要写任何东西......只需阅读.

它也只有一张我要拉的桌子.

我真的只需要做一些事情:

OtherDatabase.articles.where(id > 1000)
Run Code Online (Sandbox Code Playgroud)

就是这样.

那么我怎样才能在Rails中运行(运行3.2.13)?

小智 16

对于简单的场景,Rails可以在没有任何额外宝石的情况下支持它; 只需在database.yml中定义数据库:

other_db:
  adapter: mysql2
  encoding: utf8
  database: other_db
  username: user
  password: passwd
  host: 1.2.3.4
  port: 3306
Run Code Online (Sandbox Code Playgroud)

然后在模型中要使用其他数据库添加:

class Article < ActiveRecord::Base
  establish_connection(:other_db)
  self.table_name = 'other_db.articles'
end
Run Code Online (Sandbox Code Playgroud)

然后你可以执行你的查询:

Article.where("id > 1000")
Run Code Online (Sandbox Code Playgroud)

=)

  • 在我开始工作之后,我意识到两种方法的论点是不同的.您需要发送`establish_connection(:other_db)`连接名称,这是database.yml示例的第一行.但是`self.table_name ='other_db.articles'`需要真正的数据库名称,即database.yml的第4行. (2认同)