所以我有一个名为DbsfnpService
的rails模块。
在此范围内,我有一个班级
class DbnsfpAccess < ActiveRecord::Base
establish_connection :dbnsfp
end
然后我在DbsfnpService
内有许多与此类似的方法。
def get_tables
sql = "select * from dbnsfp limit 1"
results = DbnsfpAccess.connection.execute(sql)
return results
end
当我通过包含DbsnfpService
从另一个类调用这些方法时,我想只建立一个到:dbnsfp
的连接并处理我的所有查询然后关闭该连接。我相信它现在如何,我调用的每个包含DbsnfpAccess.connection.execute(sql)
的方法都是单独连接(?)。实现这一目标的最佳方法是什么?将连接对象传入这些函数?提前谢谢!
答案 0 :(得分:0)
如果我正确理解您的问题,您希望在不知道表名的情况下对数据库执行调用,因此无法提前创建rails ActiveRecord
表模型。
您可以使用sql
而不是执行ActiveRecord::Base.connection.tables
(见此链接How to list of all the tables defined for the database when using active record?)
要使用这些表名,您需要将DbnsfpAccess
转换为抽象类。
class DbnsfpAccess < ActiveRecord::Base
self.abstract_class = true
establish_connection :dbnsfp
end
然后您可以像这样创建要连接到DbnsfpAccess
的模型:
class DynamicallyGenratedDbnsfpModel << DbnsfpAccess