Compare items from 2 db


#1

I’ve dug thru docs, recipes, wiki, but haven’t found anything quite like
what I’m trying to do…

I have 2 databases with the same tables and same models representing
them. I want to get an item (of same name) from the 2 dbs for
comparison. Now, each example of connecting to multiple dbs I’ve seen
(including from Rails Recipes and the wiki) assumes that you want
different models accessing the different databases. How can I have the
same model access 2 different dbs at the same time?

I’ve looked at trying to subclass each model so the subclass can access
an alternate database (I’m using single-table inheritance, so that path
is out.).

I’ve also thought of using an abstract base class (similar to the
LegacyBase class mentioned in the wiki), but that won’t work because
then all items would access the alternate db…

Any pointers appreciated… -dan


#2

I got this to work partially, by defining a parallel class in a
separate module . A contrived example:

class Person
include person_methods
has_one :address
validates_presence_of :name
validates_presence_of :type
end

class Employee < Person
include employee_methods
validates_form_of :employee_id => /\d+/
end

module ToCompare
class Person < Object::Person
include person_methods
has_one :address
validates_presence_of :name
validates_presence_of :type

establish_connection :db_to_compare

end
class Employee < Person
include employee_methods
validates_form_of :employee_id => /\d+/
end
end

Two issues: 1. duplication… I used modules to keep from duplicating
the method definitions, but how can I avoid duplicating the
relationships and validations?
2. p=ToCompare::Person.find(:first)
p.connection – shows it’s connecting to :db_to_compare
p.address.connection – shows :development
How to make the related items connect to the same db?

Dan K. wrote:

I’ve dug thru docs, recipes, wiki, but haven’t found anything quite like
what I’m trying to do…

I have 2 databases with the same tables and same models representing
them. I want to get an item (of same name) from the 2 dbs for
comparison. Now, each example of connecting to multiple dbs I’ve seen
(including from Rails Recipes and the wiki) assumes that you want
different models accessing the different databases. How can I have the
same model access 2 different dbs at the same time?

I’ve looked at trying to subclass each model so the subclass can access
an alternate database (I’m using single-table inheritance, so that path
is out.).

I’ve also thought of using an abstract base class (similar to the
LegacyBase class mentioned in the wiki), but that won’t work because
then all items would access the alternate db…

Any pointers appreciated… -dan