2013-07-30 9 views
16

Sto scrivendo un sistema di gestione stipendi che si integrerà con un sistema preesistente. Il sistema originale aveva un database master che gestiva la gestione degli utenti e alcune configurazioni globali, al di sotto del numero di database identici per struttura, fondamentalmente ogni database è un database delle paghe delle aziende, tutti questi sono legati al database principale perché appartiene a un genitore società che ha molte filiali ciascuna con il proprio reparto risorse umane.Utilizzo di ActiveRecord su più database

Quello che mi chiedevo è se c'è un modo che posso, basato su un cookie o un altro metodo che memorizza a quale azienda si desidera connettersi, modificare dinamicamente il database di destinazione di ActiveRecord in base al loro input utilizzando un filtro precedente ?

Ecco un esempio:

utente A accede al sito, caricamento della pagina con le aziende disponibili che l'utente ha il permesso di accesso, l'utente sarà quindi selezionare una società, che hanno privilegi di amministratore in tale società, aggiungono un dipendente, prima che l'azione venga eseguita, i binari cambieranno la connessione al database appropriato e aggiungeranno il record.

+0

possibile duplicato di [Collegamento Rails 3.1 con più database] (http://stackoverflow.com/questions/6122508/connecting-rails-3-1-with-multiple-databases) – Heskja

risposta

11

È possibile utilizzare ActiveRecord::Base#establish_connection per connettersi al database desiderato.

Si potrebbe passare le credenziali db per establish_connection come Hash

establish_connection(
    adapter: 'mysql2' 
    encoding: 'utf8' 
    pool: 5 
    username: 'me' 
    password: 'mypassword' 
) 

Non ci sono altri esempi here

+0

Potete fornire un esempio per favore? – toro2k

+0

Domanda veloce, il file database.yml è stato caricato quando è stato chiamato 'establish_connection'? perché potrei dover aggiungere dinamicamente nuove connessioni al database tramite un pannello di controllo basato sul web. – ChaoticLoki

+0

Puoi passare le credenziali db a 'establish_connection' come un' Hash' – Santhosh

6

Non sono sicuro che si può fare in fase di esecuzione, dal momento che la connessione al database è accoppiato

Tuttavia, è possibile rendere diverse classi da collegare a database diversi Non voglio copiare qualcun altro rispondi, quindi basta ok a questo post

Connecting Rails 3.1 with Multiple Databases

e dargli il credito

Buona fortuna

Problemi correlati