Skip to content

Instantly share code, notes, and snippets.

@ryenski
Last active June 27, 2017 18:35
Show Gist options
  • Save ryenski/42c2c40751dc73910f5de925ee338eda to your computer and use it in GitHub Desktop.
Save ryenski/42c2c40751dc73910f5de925ee338eda to your computer and use it in GitHub Desktop.
Returning a consistent result object
class WidgetCreator
# ...
attr_reader :widget, :success, :errors
def result
OpenStruct.new(success?: !errors, errors: errors.try(:flatten), widget: widget)
end
end
widget_creator = WidgetCreator.new(params).call
widget_creator.success?
#=> true or false
widget_creator.errors
#=> array of errors
widget_creator.widget
#=> widget object
widget_creator.result
#=> result object
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment