We have a custom action (:register) for our Location model. The supporting code is very similar to a standard :update. Since inherited_resources provided a "template" for us, we copied the update code from actions.rb, changing 'update_attributes' to 'register' and the flash message reflects the different action. This doesn't feel very DRY. We would like to utilize :update instead. Any ideas?
class LocationsController < InheritedResources::Base
def register(options={}, &block)
#TODO: copied update from actions.rb. I expect there is a better way.
# All I changed was the flash message (to reflect the action)
# and the method call on the object (update_attributes -> register)
object = resource
if object.register
set_flash_message!(:notice, '{{resource_name}} was successfully registered.')
options[:location] ||= resource_url rescue nil
respond_with_dual_blocks(object, options, true, block)
else
set_flash_message!(:error)
respond_with_dual_blocks(object, options, false, block)
end
end