我使用ActiveRecord多標記數據庫。我必須在所有型號中放置establish_connection db
。但是我想調用庫文件的連接。雖然把establish_connection db
所有模型數據庫連接數量太多。我怎樣才能做其他方法?數據庫連接太多ActiveRecord :: Base.establish_connection
我的項目是在Sinatra上的Ruby。
我使用ActiveRecord多標記數據庫。我必須在所有型號中放置establish_connection db
。但是我想調用庫文件的連接。雖然把establish_connection db
所有模型數據庫連接數量太多。我怎樣才能做其他方法?數據庫連接太多ActiveRecord :: Base.establish_connection
我的項目是在Sinatra上的Ruby。
建設的{db_name => connection_instance }
你都可以連接一個全球性的哈希值,並從模型智能檢索它們:
def get_or_establish_connection db
$connections[db] ||= establish_connection db
end
這樣,你將重用所有已經建立的連接。
NB我寫了「全球」,因爲沒有任何建議任何更強大的方法,而不知道你的架構細節。在現實生活中,人們會將這個散列作爲一個類變量存放在任何地方。
我們在使用多個數據庫的項目中所做的工作是爲每個數據庫創建一個類,建立連接並使模型從中繼承。這樣,每個數據庫只創建一個連接。
class UsageTable < ActiveRecord::Base
self.abstract_class = true
establish_connection :usage
end
class User < UsageTable
我試過了你的建議,但數據庫類不能繼承到模型類。 – sozgur