Rails應用程序中,我有這樣的代碼在純Ruby:僅在一個塊中建立到另一個數據庫的連接?
class LinkCreator
attr_accessor :animal
def initialize(animal:)
@animal = animal
end
def call
"something#{link_id}"
end
private
def link_id
connection.execute(sql_request).first.first
end
def sql_request
"SELECT field FROM table WHERE field_id = '#{field_id}' LIMIT 1"
end
def field_id
animal.field_id
end
def connection
ActiveRecord::Base.establish_connection(
adapter: "mysql",
host: ENV["MYSQL_HOST"],
username: ENV["MYSQL_USERNAME"],
password: ENV["MYSQL_PASSWORD"],
database: ENV["MYSQL_DB_NAME"]
).connection
end
end
正如你所看到的,這不是一個模型,但只有一個簡單的類。問題在於,activerecord的連接被更改,其他請求將在新連接上執行。
是否可以僅在一個塊中建立連接並返回到舊連接。我知道我可以建立另一個連接,但這對性能來說非常糟糕。
這裏最重要的區別在於連接被比其他的對象進行所有普通對象的基類 - 因此可以單獨保留與普通對象的連接。這也將配置保存在一個共同的地方,我認爲可以保持備用數據庫連接的開放,這對於性能來說可能是一件好事,這取決於您的使用條件。 – DGM 2014-10-26 15:14:25