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