[Rails] Re: Automatic discovery of table names
Florian Groß
florgro at gmail.com
Tue Jan 25 21:42:28 GMT 2005
Jeremy Kemper wrote:
> Adelle Hartley wrote:
>>ActiveRecord::Base.connection.get_table_names.each { |table|
>>MagicallyCreateClass table }
>>Is this possible?
>
> Sure:
> connection.table_names.each do |table_name|
> class_name = table_name.camelize
> unless Object.const_defined?(class_name)
> eval "class #{class_name} < ActiveRecord::Base; end"
> end
> end
While this works it's a bit nasty and can be a little confusing when
somebody uses an invalid class name. I tend to avoid eval() when I can
and use some of the higher level ways of doing meta stuff. In this case
you could also do the following:
connection.table_names.each do |table_name|
class_name = table_name.camelize
unless Object.const_defined?(class_name)
Object.const_set(class_name, Class.new(ActiveRecord::Base) do
one_to_one_relations.each do |name|
has_one name.intern
end
def foo() end
# and so on
end)
end
end
More information about the Rails
mailing list