Capturing Validation Errors from Nested Model Creation

Hello Everyone,
The subject sort of says it all :wink: but, I will explain. Currently I
have an object (Booking) which, when its created, will also have new
contacts created everytime with it (for arguements sake). So, I can wrap
these both in a transaction, however, if any one of the contacts fails
the validation of the contact model, it will fling up a validation
error.

So, what is the best way to capture this error and return it to the

page for display ? I thought of trying

Booking.transaction do
   @allerrors = []
   contact = Contact.new(:first_name => 

params[“contact”][“first_name”])

   if not contact.valid?() then
      contact.errors.each {|attr| @allerrors.push(attr) }
   end

   # other stuff goes here

   if @allerrors.empty? and @booking.save then
       @booking.contact = myContacts
        flash[:notice] = 'Booking was successfully created.'
        redirect_to :action => 'list'
   else
         @booking.errors.each {|attr| @allerrors.push(attr) }
         redirect_to :action => 'new', :errors => @allerrors
   end
end

This is a rather contrived example, but I hope you get the idea :) I

could check the booking’s validation to make sure it always has at least
one contact, however, that would not help in the case of a booking where
3 out of the 4 contacts validated ‘fine’. I would like to use the
generic error routines if possible (you know, red box on page view, etc
etc) but how ?

Regards
Stef

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs