My controller became fat trying to handle multiple models - need guidance please

Hello all.

I am experiencing something that has to be fairly common in the rails
world, but I haven't found a clean solution yet.

I have a SignupController that handles multiple models in a single
form.
Those models are User, UserProfile, CreditCard, Subscription, and
Order.
When the form is filled out and posted, I want to do exactly what I
would do if the form was only for a single model:
(1) Build the object from params[:model]
(2) Save the object, rendering errors to the form page if they exists
(otherwise flash 'Success').

Why is this so tough when dealing with multiple models? Here is what
I
am doing (and this is how I know it's too complicated and there must
be
a better way):
(1) Building each object (@user = User.new(params[:user]), @cc =
CreditCard.new(params[:cc]), etc).
(2) http://pastie.caboo.se/94819
(3) I haven't gotten to manually building an 'errors' hash yet.

I would love to hear some feedback.
Many thanks,
Chris

Seems all of other the models are related to the User model, you should look into validates_associated:

http://rails.rubyonrails.com/classes/ActiveRecord/Validations/ClassMethods.html#M000948

Best regards

Peter De Berdt

Thanks for the feedback Peter.

From what I gather, validates_associated does not give specific error

feedback per model, so that is less than ideal. I have recently
learned that error_messages_for can take in multiple models, so that
is helpful. Still, I find dealing with multiple models in one form/
controller to be a bit cumbersome, especially compared to how smooth
everything else in rails is :slight_smile:

Cheers,
Chris