[ruby-it] 1 applicazione n database
david
david.palm a iperbole.bologna.it
Gio 24 Ago 2006 08:47:43 CEST
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...
:-)
Biagio Maffettone wrote:
> 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.
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Ml mailing list
> Ml a lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml
>
--
"Remember, always be yourself. Unless you suck." - Joss Whedon
Maggiori informazioni sulla lista
Ml