Calling methons in subclass on extend

In Rails, the Tableless plugin allows you to define tableless models:

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

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

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

def A.inherited(clazz)


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


This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs