2013-08-21 87 views

回答

1

这里是official explanation

委托(*方法)公共

提供一个委托类的方法来轻松地将包含的对象的公共方法作为你自己的。

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 #<Foo:0x1af30c> 

这里是它如何与实例工作的一些其他的解释:

http://brettu.com/rails-daily-ruby-tip-20-use-the-delegate-method-in-rails-to-reduce-code/

http://www.simonecarletti.com/blog/2009/12/inside-ruby-on-rails-delegate/

http://pivotallabs.com/rails-delegates-are-even-more-useful-than-i-knew/