# Nested models

**URL:** <https://discuss.rubyonrails.org/t/nested-models/11060>\
**Category:** rubyonrails-talk\
**Created:** [March 31, 2007, 3:59am UTC](https://discuss.rubyonrails.org/t/nested-models/11060 "2007-03-31T03:59:33Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![cooperman](https://avatars.discourse-cdn.com/v4/letter/c/f08c70/32.png) [@cooperman](https://discuss.rubyonrails.org/u/cooperman)\
**Post date:** [March 31, 2007, 3:59am UTC](https://discuss.rubyonrails.org/t/nested-models/11060/1 "2007-03-31T03:59:33Z")

</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:** ![Erik\_Allik](https://avatars.discourse-cdn.com/v4/letter/e/71e660/32.png) [@Erik\_Allik](https://discuss.rubyonrails.org/u/Erik_Allik)\
**Post date:** [April 1, 2007, 9:14am UTC](https://discuss.rubyonrails.org/t/nested-models/11060/2 "2007-04-01T09:14:26Z")

</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:** ![cooperman](https://avatars.discourse-cdn.com/v4/letter/c/f08c70/32.png) [@cooperman](https://discuss.rubyonrails.org/u/cooperman)\
**Post date:** [April 2, 2007, 3:34am UTC](https://discuss.rubyonrails.org/t/nested-models/11060/3 "2007-04-02T03:34:50Z")

</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
