5

Gibt es eine Möglichkeit, ActiveRecord Verbindungserstellung zu verknüpfen? Ich möchte Code ausführen, sobald eine Verbindung erstellt wurde.Ein Rückruf für ActiveRecord-Datenbankverbindungen?

Ich glaube, es könnte eine Möglichkeit sein, eine MySQL-Variable auf der Verbindung zu setzen, da "Variablen" in database.yml scheint nicht für mich zu arbeiten. (How to turn off MySQL strict mode in Rails)

+0

Würde dies für ein bestimmtes Modell oder im Allgemeinen? –

Antwort

3

Die ConnectionAdapter definiert zwei Rückrufe :checkout (verbinden) und :checkin (trennen). Sie können es für spezifische Adapter wie

ActiveRecord::ConnectionAdapters::MysqlAdapter.set_callback :checkout, :after do 
    raw_connection.set_your_variables ... 
end 

verwenden oder können Sie ActiveRecord::Base.connection.class für verwenden, was auch immer Adapter zur Zeit in database.yml

+0

Bitte beachten Sie, dass ab Rails 5.2 dieser Callback nicht einmalig nach dem Verbindungsaufbau ausgelöst wird, sondern bei jedem Checkout aus dem Verbindungspool (denken Sie wie vor der Verarbeitung jeder HTTP-Anfrage). Außerdem können Sie keine Modellmethoden aufrufen (Sie erhalten endlose Rekursion). – Envek