hyperdelegate

Created: 2008-09-20 12:51
Updated: 2014-05-23 23:45
License: mit

README.markdown

Hyperdelegate

Implementation as a plugin of this patch for Rails.

[PATCH] More options to make delegate more flexible

Adds two options to delegate to make it more flexible and support two frequent patterns in delegation.

You can specify a target if you don't want your method to have the same name:

class Foo < ActiveRecord::Base
  belongs_to :greeter
  delegate :hi, :to => :greeter, :target => :hello
end

Foo.new.hi # returns Foo.new.greeter.hello

If the object in which you delegate can be nil, you may want to use the :allow_nil option. In that case, it returns nil instead of raising a NoMethodError exception:

class Foo
  def initialize(bar = nil)
    @bar = bar
  end
  delegate :zoo, :to => :bar
end

Foo.new.zoo   # raises NoMethodError exception (you called nil.zoo)

class Foo
  def initialize(bar = nil)
    @bar = bar
  end
  delegate :zoo, :to => :bar, :allow_nil => true
end

Foo.new.zoo   # returns nil

Copyright (c) 2008 Sergio Gil, released under the MIT license

Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more