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