Rails 中的委托是什么?

问题描述 投票:0回答:2

我一直在浏览Rails的源代码,发现了一些

delegate
的用途。它有什么作用以及如何工作?

ruby-on-rails ruby oop delegates
2个回答
3
投票

这是官方解释

委托(*方法)公共

提供委托类方法,可以轻松地将所包含对象的公共方法公开为您自己的方法。

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/


0
投票

代表可帮助您保持在 LoD 范围内,而不会影响 SRP。

http://en.wikipedia.org/wiki/Law_of_Demeter

© www.soinside.com 2019 - 2024. All rights reserved.