1 applicazione n database

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.

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…

:slight_smile: