Delegation in rails

Published on Author Akhil BansalLeave a comment

I don’t know why it is not mentioned any where in rails api, it could be very useful for all.

This is straight from rails\activesupport\lib\active_support\core_ext\module\deligation.rb :

Provides a delegate class method to easily expose contained objects’ methods
as your own. Pass one or more methods (specified as symbols or strings)
and the name of the target object as the final :to option (also a symbol
or string). At least one method and the :to option are required.

Delegation is particularly useful with Active Record associations:

[source:ruby]
class Greeter < ActiveRecord::Base def hello() "hello" end def goodbye() "goodbye" end end class Foo < ActiveRecord::Base belongs_to :greeter delegate :hello, :to => :greeter
end

Foo.new.hello # => “hello”
Foo.new.goodbye # => NoMethodError: undefined method `goodbye’ for #

Multiple delegates to the same target are allowed:
class Foo < ActiveRecord::Base delegate :hello, :goodbye, :to => :greeter
end

Foo.new.goodbye # => “goodbye”

[/source]

Leave a Reply

Your email address will not be published. Required fields are marked *