Hello there,
I am having a problem inheriting an already inherited class. errr…
sounds more complicated than it is… look:
class Item < ActiveRecord::Base
has a name and description field
end
class Reference < Item
has a something field
end
class UrlReference < Reference
#has an url field
end
… now If I do make a u = UrlReference.new in the console for
example, the ‘u’ instance does NOT have the url field… only the ones
from Reference and Item…
How come? I guess that’s basic ruby… but how do I properly inherit
from other classes which again inherit from other ones? Did I miss
something here?
Cheers & thanks,
-Joerg
On Feb 8, 2008 3:10 AM, Jörg Battermann [email protected] wrote:
has a something field
How come? I guess that’s basic ruby… but how do I properly inherit
from other classes which again inherit from other ones? Did I miss
something here?
Cheers & thanks,
Hmm, not sure. I think maybe the problem lies within your database
schema or your use of “single table inheritance” with ActiveRecord.
Class inheritance in pure Ruby is easy…
class A
def initialize; @a=nil; end
end
class B < A
def initialize; super; @b=nil; end
end
class C < B
def initialize; super; @c=nil; end
end
c = C.new
puts c.inspect
=> #<C:0x2df0848 @c=nil, @a=nil, @b=nil>
Todd
On 2/8/08, Jörg Battermann [email protected] wrote:
has a something field
How come? I guess that’s basic ruby… but how do I properly inherit
from other classes which again inherit from other ones? Did I miss
something here?
First, ActveRecord attributes are not Ruby attributes, they are
dynamically obtained from the SQL table the class is connected to.
Second, in reality, in Ruby you don’t inherit instance variables
either, only methods. In fact I just got done writing a rather long
article about this subtlety.
http://talklikeaduck.denhaven2.com/articles/2008/02/08/whose-variable-is-it-anyway
–
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/