Forum: Ruby Calling methons in subclass on extend

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
E31e0ba78d2df04dc252e1bf87e8f378?d=identicon&s=25 Shak Shak (sshaikh)
on 2009-05-13 00:07
In Rails, the Tableless plugin allows you to define tableless models:

class A < ActiveRecord::Base
   include Mod
   tableless :columns => [[:id, :int]]
   column :name, :string
end

I'm not clear what you call these methods being called in class
definition. Static constructor calls perhaps? Anyway, let's say I want a
new model as A, but with an extra column:

class B < A
   column :desc, :string
end

How do I get the process of inheriting from A call the same static
methods as in A's definition? I tried something like this:

class A < ActiveRecord::Base
   def A.setup(clazz)
      clazz.class_eval{include Mod}
      clazz.tableless :columns => [[:id, :int]]
      clazz.column :name, :string
   end

   def A.inherited(clazz)
      setup(clazz)
   end

   setup(A)
end

But this doesn't seem to work - A seems to work as before, but B cannot
be new'd for some reason (can't dup NilClass). Any suggestions on how to
get this working as intended?

Although I'm using this in Rails, I assume that this is a general Ruby
meta programming question, but apologies if I've placed it in the wrong
forum.

Shak
This topic is locked and can not be replied to.