I''ve been playing around with the idea of using the database for model validation where possible (instead of duplicating that validation in rails). My first approach to this was to catch exceptions from save/ create and parse the errors, in my case from postgres, to turn them into something friendlier. Something like: def update create end def create begin super rescue ActiveRecord::StatementInvalid => e errors.add_to_base(e.to_s) end end but apparently rails ignores errors at this point. This just results in rails thinking the record is saved when it has not been. So next I tried something more elaborate. This is a bit contrived and I don''t think I would actually use this but I''m just trying to figure out callbacks and such: def initialize (attrs = nil) super(attrs) @attempt = 0 end def update create end def create begin @attempt += 1 if @attempt == 1 @error = nil super end rescue ActiveRecord::StatementInvalid => e @error = e.to_s end end def after_save if !@error.nil? and @attempt < 2 save! end end def validate if @error.nil? super else errors.add_to_base(@error) end end The idea was to catch the original exception and save it, force it back thru "save" and set the error in that second passes call to validate. Even though the call to "errors.add_to_base(@error)" works, it doesn''t seem to prevent the exception being thrown in the UI. Has anyone attempted something like this or have any ideas how to proceed? I guess I''m gonna have to dig into the rails code a bit deeper. --~--~---------~--~----~------------~-------~--~----~ 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?hl=en -~----------~----~----~----~------~----~------~--~---