减少未定义的方法

时间:2014-08-21 09:51:45

标签: ruby-on-rails ruby

我有以下模型结构。 ClassType有很多程序,程序有很多类。

我正在尝试获取类类型的所有新类:

def new_classes
    programs.reduce { |count, program| count + program.classes.new_classes.count }
end

我不断收到此错误消息:

undefined method `+' for #<Program:0x00000003535518>

有什么问题?

1 个答案:

答案 0 :(得分:3)

来自documentation

  

如果没有明确指定备忘录的初始值,那么集合的第一个元素将用作备忘录的初始值。

您需要提供count的初始值,否则它将是第一个元素(类Program):

def new_classes
    programs.reduce(0) { |count, program| count + program.classes.new_classes.count }
end