My controller became fat trying to handle multiple models-?

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) Parked at Loopia
(3) I haven’t gotten to manually building an ‘errors’ hash yet.

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