Skip to content

Instantly share code, notes, and snippets.

@spickermann
Last active December 23, 2015 08:19
Show Gist options
  • Save spickermann/6606858 to your computer and use it in GitHub Desktop.
Save spickermann/6606858 to your computer and use it in GitHub Desktop.
A decorator that can return faked data for defined fields
# depends on: https://github.com/masover/blankslate
#
# user = User.new(:name => 'foo')
# user.name #=> 'foo'
# Decorator.new(user).name #=> 'foo'
#
# but
# Decorator.new(user, :name => 'bar').name #=> 'bar'
class Decorator < BlankSlate
def initialize(record, fields = {})
@record = record
@fields = (fields || {}).symbolize_keys
end
# restore default send method
def send(*args)
__send__(*args)
end
private
def method_missing(sym, *args, &block)
@fields[sym] || @record.send(sym, *args, &block)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment