From: Brian Candler Date: 2009-05-27T17:42:21+09:00 Subject: Re: How to access variables from within class definition eggman2001 wrote: > I've got something like: > > @var = 'brown' This is an instance variable of the top-level (main) object. > class Foo < ActiveRecord::Base > set_table_name @var > end Now you're inside class Foo, @var is an instance variable of the Foo class object (sometimes called a "class instance variable", but it's just an instance variable like any other) > However, as the code is right now, I'm not able to access @var from > within the class definition. Can someone tell me how I can accomplish > this? (1) Horrible: class Foo < ActiveRecord::Base set_table_name eval("@var", TOPLEVEL_BINDING) end (2) Much better to use a local variable: var = 'brown' Foo.set_table_name var That should work unless set_table_name is a private method. If it is, then: (3) var = 'brown' Foo.class_eval { set_table_name var } You see that local variables propagate happily into blocks. It's only 'class' and 'def' which start with a clean slate as far as local variables are concerned. -- Posted via http://www.ruby-forum.com/.