Hello Everyone,
The subject sort of says it all 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