S
Shak Shak
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
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