two models one cotroller/view

hi all

I have two different models representing two different data sets

but I want to use the same controler and views to process them

how can I DRY this up so I don’t have to use a separate controller and view for each model?

would helpers be the solution?

so their urls’s would work like this:

www.site.com/model1/draws/view/1 www.site.com/model2/draws/view/1

cheers

dion

Wasn't it easier to DRY up your models instead of controllers and views?

If those data sets use logic that is close enough to require identical views, chances are you could merge those models with an extra column or two for identifying the kind. Just a wild guess, of course, since you gave us only so much details.

Otherwise, I think with the URLs you have posted, you may not need helpers. Use the model1/model2 part as an extra parameter, and process that in the controller to get the right records. (Sorry if I'm not making any sense).

Kind regards,

Branko

Hi Branko…

you made perfect sense…I have thought about those two options as well,

using the same model would be easy, but I thought it might be cleaner to have two different models, for the two slightly different datasets…(normalisation)

but testing for the model name as a parameter in the route would be should be just as easy…

however out of the three options…i’m not sure which one is the ‘rails’ way to do it…

Well, I'm quite new to Rails so I wouldn't know what exactly would be the true Rails way. But I guess the less you fight Rails, the closer your are to Rails way. :wink:

Branko

I don't know if it could help in your case but you could do single- table inheritance : (see http://api.rubyonrails.com/classes/ActiveRecord/Base.html )

to put things simply, you add a column named "type" (with datatype set to string) in the table that will contain both models then, in the general model file:

class GeneralModel < ActiveRecord::Base # code goes here end

class SpecializedModel1 < GeneralModel

end

class SpecializedModel2 < GeneralModel

end

then if each specialized model has some really unique properties, you can wrap these in a column that you would then serialize into a specific object type, which could be a Hash or anything else (serialization is also covered in the article I provided the link for).

If this doesn't help in any way, check out : http://api.rubyonrails.com/classes/ActionController/Resources.html it contains documentation for "resource", and "resources" methods, which accept the "controller" and "path_prefix" parameters you could find use for.