在RoR中连接到外部数据库的惯用方法?

时间:2012-08-20 15:08:45

标签: mysql ruby-on-rails

我正在创建一个RoR应用程序,并且需要连接到我公司的MySQL数据库(本身与此应用程序无关)来收集一些数据并通过RoR应用程序进行报告。连接到此数据库的惯用方法是什么?我只会运行一些相当简单的select查询,但它们通常涉及表连接。我应该只是连接,因为这不是一个RoR应用程序吗?

1 个答案:

答案 0 :(得分:1)

如果您的查询主要绑定到单个表或仅使用少量连接,您实际上可以为它们定义模型。似乎允许ActiveRecord对它们进行操作可能是在Rails中执行它的最惯用的方法。

首先,在database.yml

中定义公司数据库
class ExternalDbTable
  # Connect to the db
  establish_connection :connx_from_database_yml

  # Define table if this query is bound to a single table
  set_table_name 'ext_db_table'
  set_primary_key 'pk_column'
end

从那里,您可以像使用Rails模型一样定义named_scope,并且基本上享受所有ActiveRecord的好处。如果您不必访问外部数据库上的少数几个表,则可以为每个表创建模型,并像在ActiveRecord中一样定义has_many/belongs_to关系。但是,如果它是大量表并且您能够在外部数据库上创建视图,则可以创建指向视图的模型,该模型为您执行连接。然后根据需要在视图中定义named_scope