35 lines
607 B
Ruby
35 lines
607 B
Ruby
class Result
|
|
attr_reader :data, :error
|
|
|
|
def initialize(success:, data: {}, error: nil)
|
|
@success = success
|
|
@data = data
|
|
@error = error
|
|
end
|
|
|
|
def success?
|
|
@success
|
|
end
|
|
|
|
def failure?
|
|
!@success
|
|
end
|
|
|
|
def self.success(data = {})
|
|
new(success: true, data: data)
|
|
end
|
|
|
|
def self.failure(error)
|
|
new(success: false, error: error)
|
|
end
|
|
|
|
# Allow accessing data as methods
|
|
def method_missing(method, *args)
|
|
return @data[method] if @data.key?(method)
|
|
super
|
|
end
|
|
|
|
def respond_to_missing?(method, include_private = false)
|
|
@data.key?(method) || super
|
|
end
|
|
end |