Forum: Ruby on Rails One model with lots of tables in Rails

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.
The N. (Guest)
on 2008-11-06 18:17
(Received via mailing list)
On a forum I discovered this. That was intended for to use on just one
model:

module SharedStuff
     self.abstract_class = true
     self.table_name = 'footable'
     self.table_name = 'bartable'
end

class Foo < ActiveRecord::Base
   include SharedStuff
end

class Bar < ActiveRecord::Base
   include SharedStuff
end

Surely, this overrides the Rails conventions, but that's what i intend
to achieve. Can I do this in one model? Is this true? Can you verify
this example take from here:
http://groups.google.com/group/rubyonrails-deploym...
?
Hope you can help me.

Later

The N.
The N. (Guest)
on 2008-11-06 21:16
(Received via mailing list)
May I correct myself: Can I put all the tables of the database in one
model? Making one-on-one when you have 49 tables is a royal PITA!
Practical, but a PITA!

Hope I didn't confuse you.

Later...

The N.
Ar C. (Guest)
on 2008-11-07 02:00
Your interpretation:
>
> module SharedStuff
>      self.abstract_class = true
>      self.table_name = 'footable'
>      self.table_name = 'bartable'
> end
>
> class Foo < ActiveRecord::Base
>    include SharedStuff
> end
>
> class Bar < ActiveRecord::Base
>    include SharedStuff
> end

isn't the same as what is mentioned in that posting...  including the
SharedStuff module just makes those methods available to your model,
each model should still spec its own table_name. As you are set,
everything reads from 'bartable' if I understand the internals
correctly.

I prefer the abstract class method, and have a class GenericModel, which
defines all the default behaviors for all the other models. Centralized
cache management, polymorphic join management, all that ugly stuff you
don't want to type more than once.

Every other model inherits from GenericModel, overriding default
behaviors if necessary. But GenericModel has no data fields, no table
names, just methods.

I also use a GenericController, and for almost all of my other
controllers, they contain nothing more than a before_filter, sometimes a
different layout, and any actions unique to their model. index, new,
edit, save, update... they all reside in GenericController. Actions not
done by all controllers, like deep copy, or PDF generation are in each
controller that supports it.
This topic is locked and can not be replied to.