I have a form with fields from several models present. My model relations are: addresses has_many contacts contacts has_one user user belongs_to contact contact belongs_to address The code below works fine, but it''s ugly. I think I ought to be able to just save the address, and everything else should work automatically, but it doesn''t. (The address gets written to the database, but not the user or the contact.) E.g. I would like to write: Address.transaction do @address.save! end rather than: Address.transaction do @address.save! @contact.address_id = @address.id @contact.save! @user.contact_id = @contact.id @user.save! end Perhaps someone can point me in the right direction here... Regards, Chris Working code: the registration controller''s method is: def register if request.get? session[:user_id] = nil @user = User.new @contact = Contact.new @address = Address.new else @user = User.new params[:user] @contact = Contact.new params[:contact] @address = Address.new params[:address] Address.transaction do @address.save! @contact.address_id = @address.id @contact.save! @user.contact_id = @contact.id @user.save! end session[:user_id] = @user.id render :action => :registered end #rescue end and the template''s code is: <% @page_title = ''register''%> <%= error_messages_for ''user'' %> <%= error_messages_for ''contact'' %> <%= error_messages_for ''address'' %> <%= form_tag %> <p>name:<br /> <%= select ''contact'', ''title'', %w{ Mr Miss Mrs Ms Dr Prof Sir } %> <%= text_field ''contact'', ''firstname'', :size => 15 %> <%= text_field ''contact'', ''lastname'', :size => 15 %> <p>phone:<br /> <%= text_field ''contact'', ''phone'', :size => 10 %> <p>email: <span class="note">(needed to login to this site)</span><br /><%= text_field ''user'', ''email'', :size => 20 %></p> <p>password:<br /><%= password_field ''user'', ''password'', :size => 10 %></p> <p>address:<br /> <%= text_field ''address'', ''line1'', :size => 20 %><br /> <%= text_field ''address'', ''line2'', :size => 20 %><br /> <%= text_field ''address'', ''town'', :size => 20 %><br /> <%= text_field ''address'', ''county'', :size => 20 %><br /> <%= text_field ''address'', ''postcode'', :size => 10 %><br /> <p><%= submit_tag ''register'' %></p> <%= end_form_tag %> --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---