# Nested models

**URL:** <https://www.ruby-forum.com/t/nested-models/90701>\
**Category:** Rails\
**Created:** [March 31, 2007, 6:00am UTC](https://www.ruby-forum.com/t/nested-models/90701 "2007-03-31T06:00:36Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [March 31, 2007, 6:00am UTC](https://www.ruby-forum.com/t/nested-models/90701/1 "2007-03-31T06:00:36Z")

</div>

I wanted to gather some feedback from people about nested models and  
the assumptions that they make about the underlying database  
structure. As I see it, the primary function of nesting model classes  
inside of modules is to provide a namespacing mechanism. Given that a  
model class called Admin::Foo and User::Foo will both use the table  
name ‘foos’ by default this namespacing seems to be incomplete. You  
could always specify a different table name for each class but this is  
a pretty manual approach to namespacing. The only feasible solution I  
could come up with is to have a class named Admin::Foo assume a  
default table name of admin\_\_foos. The double \_ would prevent a  
collision with a class named AdminFoo and seems to me the most logical  
way to differentiate between the two.

Just wanted to throw the topic out there, see what people thought,  
etc. I would definitely consider submitting a patch if it seems like  
there is some interest…

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [April 1, 2007, 11:16am UTC](https://www.ruby-forum.com/t/nested-models/90701/2 "2007-04-01T11:16:00Z")

</div>

Has Rails even been designed with namespaces in mind?  
Is it possible to put models, controllers etc. in namespaces in a  
standard  
Rails way?

Erik

---

<div class="post-metadata">

**Author:** ![casper\_the\_ghost](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58956e/32.png) [@casper\_the\_ghost](https://www.ruby-forum.com/u/casper_the_ghost)\
**Post date:** [April 2, 2007, 5:35am UTC](https://www.ruby-forum.com/t/nested-models/90701/3 "2007-04-02T05:35:58Z")

</div>

I’m not really sure what the design decisions behind being able to  
organize models and controllers into modules were but I can’t imagine  
that namespacing was not among them. In answer to your question, yes,  
controllers and models can be namespaced by placing them in a module  
(so you can have a file called apps/controllers/admin/  
login\_controller.rb containing a class called Admin::LoginController  
and another file called apps/controllers/user/login\_controller.rb  
containing a class called User::LoginController). You can effectively  
do the same thing with models classes. The problem I am pointing out  
is that even if you have models organized in this way there is no  
standard way to break up the backing database tables in such a way  
that collisions will not occur…

~Ross
