Nested Controllers/Models/Views


#1

I’m working on a project that is getting fairly large and I want to nest
the controller, model and view files so they each have parent
directories. I do not want the nesting to affect any of the routing or
any of the functionality, it is purely a organizational thing.

(
I want my files organized like this:

app/controllers/parent_a/a_controller
app/controllers/parent_b/another_controller

app/models/parent_a/a_model
app/models/parent_b/another_model
)

I’ve read many conflicting things about doing this, and am confused.
Some people say that you can simply move the files and it will just work
because the different resources will still remain in the same namespace
even if they are in different folders. I’ve tried this, though, and
references to models are broken.

Is there a better way to do this? Is there something I’m not doing that
is breaking my references?

Cheers, Ray!


#2

On Apr 11, 4:17 pm, Raymond O’Connor <rails-mailing-l…@andreas-
s.net> wrote:

I’m working on a project that is getting fairly large and I want to nest
the controller, model and view files so they each have parent
directories. I do not want the nesting to affect any of the routing or
any of the functionality, it is purely a organizational thing.

I’ve had pretty good luck with this. Here’s what I’ve done:

  1. For models that are in subfolders, I make sure that the model is in
    a namespace that can be equivocated to a folder by the Inflector. For
    example, /app/models/extra/product.rb would look like this:

module Util

class Product < ActiveRecord::Base
end

end

or you could do

class Util::Product < ActiveRecord::Base

instead.

For controllers, do the same thing - make sure the fully qualified
name will match the folder heirarchy.

There’s one big gotcha, though - your routing will need to specify the
full path to the controller, for example

map.connect ‘/products/:action/:id’, :controller => ‘subfolder/
products’

Then everything should work.

Jeff