Hi
Is there a way in Ruby or Rails to have a global exception handler to rescue from a StaleObject exception? I know about rescue_action_in_public, but I don’t know how to get the object the exception occurred on.
For example, while updating a record identified as @my_record, a StaleObject exception is thrown. I would like to implement a global way of grabbing the class variable in the exception handling and automatically comparing all the attributes from params[:my_record] to @my_record.
If the record has become stale on attributes that weren’t changed by the user (i.e. user 1 changed field “title”, while user 2 only changed field “summary”), although the record has become stale, updating the record with the updated fields on the newer version of the record doesn’t need additional user intervention. If the attributes changed by both users are identical, it would be handled differently.
I know I’m simplifying things a bit, but I think you pretty much get the picture.
I just want to avoid having to repeat myself all the time:
begin
…
rescue ActiveRecord::StaleObjectError
if automatically_handlestaleobject(@my_record)
redirect_to …
else
render “a_layout_or_even_rjs_to_let_the_user_handle_it”
end
end
Best regards
Peter De Berdt