如何使rails外部数据库调用?

时间:2011-01-18 18:10:18

标签: ruby-on-rails database

所以我希望能够将一个外部数据库添加到我的config/database.yml然后从中建模一个表。

这可能吗?我无法弄清楚如何。

“连接到不同模型中的多个数据库

通常通过ActiveRecord::Base.establish_connection创建连接,并由ActiveRecord::Base.connection检索。从ActiveRecord::Base继承的所有类都将使用此连接。但您也可以设置特定于类的连接。例如,如果CourseActiveRecord::Base,但位于不同的数据库中,则可以说Course.establish_connectionCourse,并且其所有子类都将使用此连接。

通过在ActiveRecord::Base中保留一个由类索引的哈希值的连接池来实现此功能。如果请求连接,则retrieve_connection方法将上升到类层次结构,直到在连接池中找到连接。 “

2 个答案:

答案 0 :(得分:16)

首先,在database.yml中定义连接信息:

my_external_db:
  adapter: mysql
  username: ...
  ....

然后,创建模型并将其连接到外部数据库

class MyExternalModel < ActiveRecord::Base
  establish_connection(:my_external_db)
  set_table_name 'my_external_table'
end

答案 1 :(得分:2)

set_table_name已删除,因此您应使用:self.table_name