Ruby on rails 在rails中,如何委托给类方法 类任务日期。今天。每周的开始日期。日期。今天。每周的结束) 结束 结束 类重要:taskable,:dependent=>:destroy 本周委派:至=>:任务 结束

Ruby on rails 在rails中,如何委托给类方法 类任务日期。今天。每周的开始日期。日期。今天。每周的结束) 结束 结束 类重要:taskable,:dependent=>:destroy 本周委派:至=>:任务 结束,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,到目前为止,当我尝试重要。本周时,此代理未按预期工作。我收到一个错误,说本周没有为类定义方法 有什么想法吗?我甚至可以委托给这样的类方法吗?我可能会有另外一两个类以这种方式扩展任务,所以我很好奇它是如何工作的,不会将一堆代码复制到每个实现类中。您正在学习。delegatehelper为当前类定义了一个实例方法,以便它的实例委托调用该实例上的某个变量 如果要在类级别委派,则需要打开singleton类并在其中设置委派: class Important < ActiveRecord::Base

到目前为止,当我尝试
重要。本周
时,此代理未按预期工作。我收到一个错误,说本周没有为类定义方法

有什么想法吗?我甚至可以委托给这样的类方法吗?我可能会有另外一两个类以这种方式扩展
任务,所以我很好奇它是如何工作的,不会将一堆代码复制到每个实现类中。

您正在学习。
delegate
helper为当前类定义了一个实例方法,以便它的实例委托调用该实例上的某个变量

如果要在类级别委派,则需要打开singleton类并在其中设置委派:

class Important < ActiveRecord::Base
  attr_accessible :email

  has_one :task, :as => :taskable, :dependent => :destroy

  class << self
    delegate :this_week, :to => :task
  end
end

您可以将一个方法委托给一个常量——它只区分大小写。此外,方法的名称必须作为符号传递给
委托

class Important < ActiveRecord::Base
  delegate :this_week, :to => :Task
  # Note ':this_week' instead of 'this_week'
  # Note 'Task' instead of 'task'
end
class-Important:任务
#注:本周而非本周
#注意“任务”而不是“任务”
结束

考虑继承性,将方法委托给类方法:

delegate :this_week, :to => :class
您可以委托给这样的特定类(另请参见Isaac Betesh的回答):

可在以下位置获取文档:

我认为,当你说
本周委派,:to=>:task
时,Rails认为这意味着“当有人调用
本周
一个
重要的
:task
对象的
本周
方法时,返回该重要的
:task
对象的
本周
方法的值。”,清洁的很好
delegate :this_week, :to => :class
delegate :this_week, :to => :Task