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