This project is archived and is in readonly mode.
More options to make delegate more flexible
Reported by porras | September 20th, 2008 @ 12:56 PM | in 2.x
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
Comments and changes to this ticket
-
Pratik September 24th, 2008 @ 11:21 PM
- Title changed from [PATCH] More options to make delegate more flexible to More options to make delegate more flexible
-
porras September 24th, 2008 @ 11:23 PM
- Title changed from More options to make delegate more flexible to [PATCH] More options to make delegate more flexible
This is almost a duplicate of http://rails.lighthouseapp.com/p...
I added the :allow_nil option to it.
-
porras September 24th, 2008 @ 11:24 PM
- Title changed from [PATCH] More options to make delegate more flexible to More options to make delegate more flexible
Fixing unintentional change of title.
-
Daniel Schierbeck October 3rd, 2008 @ 03:57 PM
- Tag changed from activesupport, enhancement, patch to activesupport, duplicate, enhancement
-
Frederick Cheung December 30th, 2008 @ 04:28 PM
- State changed from new to duplicate
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>
People watching this ticket
Attachments
Referenced by
- 984 Make it possible to alias delegation methods I created a patch which was a duplicate of this one (http...