# 1 applicazione n database

**URL:** <https://www.ruby-forum.com/t/1-applicazione-n-database/66243>\
**Category:** IT\
**Created:** [August 24, 2006, 8:20am UTC](https://www.ruby-forum.com/t/1-applicazione-n-database/66243 "2006-08-24T08:20:30Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [August 24, 2006, 8:20am UTC](https://www.ruby-forum.com/t/1-applicazione-n-database/66243/1 "2006-08-24T08:20:30Z")

</div>

Questo lo scenario:  
L’applicazione gestisce n utenti.  
Ogni utente si connette al suo database: utente =\> k database =\>  
k\_database  
Inoltre tutti gli utenti si connettono ad un database comune =\>  
common\_database  
Quindi al login l’utente k immette il database a cui connettesi e  
relative credenziali e a questo punto si connette contemporaneamente a  
k\_database e common\_database.  
Ora negli esempi che ho potuto vedere nel web il database viene  
specificato in  
database.yml ma qui si ha bisogno che questa scelta sia fatta all’atto  
del login.  
Avete suggerimenti ?

Grazie.  
B.M.

---

<div class="post-metadata">

**Author:** ![Biagio\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/b/77aa72/32.png) [@Biagio\_M](https://www.ruby-forum.com/u/Biagio_M)\
**Post date:** [August 24, 2006, 8:49am UTC](https://www.ruby-forum.com/t/1-applicazione-n-database/66243/2 "2006-08-24T08:49:23Z")

</div>

Ho un progetto in corso che migra dati da un’istanza di Oracle verso  
un’altra (e processa i dati in mezzo). Non Ã¨ un applicazione rails, ma  
uso ActiveRecord, subclassandolo (dal verbo /subclassare…)/ cosÃ¬:

require ‘rubygems’  
require ‘active\_record’

class primo\_db\_AR \< ActiveRecord::Base  
self.abstract\_class = true  
self.pluralize\_table\_names = false  
establish\_connection(  
:database =\> “nome\_db”,  
:adapter =\> “oci”,  
:host =\> “nome\_host”,  
:username =\> “user”,  
:password =\> “pwd”  
)  
end

class secondo\_db\_AR \< ActiveRecord::Base  
self.abstract\_class = true  
self.pluralize\_table\_names = false  
establish\_connection(  
:database =\> “nome\_db\_2”,  
:adapter =\> “oci”,  
:host =\> “nome\_host\_2”,  
:username =\> “user2”,  
:password =\> “pwd2”  
)  
end

A questo punto puoi creare modelli che sfruttino o l’una o l’altra  
connessione (abbastanza) trasparentemente:

class pippo \< primo\_db\_AR  
set\_table\_name :nome\_bizzarro\_della\_tabella  
has\_many :paperinos  
end

class pluto \< secondo\_db\_AR  
end

Il “trucco” sta tutto nel indircare a AR che la sottclasse Ã¨ “abstract”.  
Nel tuo caso tutta la vicenda di subclassare AR per connetterti al  
k\_database nonchÃ© al db comune va fatta dinamicamente, al momento del  
login. SarÃ forse un po’ incasinato, ma non sembra impossibile…

🙂
