Model Advice

Hi-

I have a single controller that’s associated with a single model. I
would now like to create a whole bunch more models to use the same
controller, is this a bad idea?

If I use the scaffold generator (which takes the controller and model
as inputs) will this wipe out all the work I have already done for the
first model (in the views and controller)?

What is the best way to go when you have a lot of models and a single
controller?

Thanks!

I’m guessing you want to perform some operation on multiple models in
the same action.

You can use: script/generate model ModelName name:string this:integer
that:boolean

This lets you generate all the extra models (and migrations). You’ll
then need to add them into the controller yourself.

Nevermind…I looked it up, sorry for being lazy :slight_smile:

So, a question on good practice:

Having multiple models in one controller is a good/normal thing?

Yes, I will essentially do the same things with the new model.

What are the extra parameters doing in the generator?

The extra (optional) arguments after the ModelName will prepopulate
the generated migration file with the columns (and types) specified.

Ok. Thanks very much for your feedback!

There’s nothing inherently wrong with multiple models in a
controller. Often times, though, you’re dealing with a single model
and its associations (which are other models). For instance, finding
a product and its category, brand, sizes, and colors. You only need:
@product = Product.find(params[:id]) to get @product.brand,
@product.category, @product.sizes, etc.

There’s a really good screencast on doing CRUD with associations here:

I find it better, even though multiple controllers do very much the same
thing, to have a separate controller for every model in the case that if
I
have to change something in one model I don’t have to split it up later
on.

It’s also more along the lines of the Rails way.