From: Stephen Bannasch Date: 2006-04-11T05:24:03+09:00 Subject: class variables and inheritance (ActiveRecord problem) I'm new to Ruby and I'd like to be able to derive from a class and define a new class variable to replace a class variable in the parent class -- however I also want the original class to have access to it's original class variable. Here's my simple test program: class Klass cattr_accessor :prefix @@prefix = '' def Klass.show(string) puts @@prefix + string end end class DerivedKlass < Klass cattr_accessor :prefix @@prefix = '' end Klass.prefix = "123" Klass.show("abc") # => "123abc" DerivedKlass.prefix = "789" DerivedKlass.show("abc")# => "789abc" Klass.show("abc") # => "789abc" I'd like Klass.show("abc") to instead produce "123abc". The reason I'd think I'd like to do it this way is that I need to change how ActiveRecord works. Here's my problem: I have 2 different ActiveRecord connections open and one of them is to a shared database so I set the following class variable: ActiveRecord::Base.table_name_prefix = 'myapp_' So while I refer to the table 'users' in my code in the database the table is actually named 'myapp_users'. However the other connection is to a legacy database and I need to access the tables in this database without the table_name_prefix. If this can't be done perhaps I could do something in DerivedKlass so that any accesses to it's actual or inherited object methods save Klass.prefix, replace it, and restore it? Of course the restoration would have to work for both normal program flow and for an error. This sounds uglier to me. Thanks for any advice. -- - Stephen Bannasch Concord Consortium, http://www.concord.org