1

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

4

1 回答 1

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

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

于 2012-08-20T15:18:06.400 回答