Ruby中未定义的类方法

时间:2017-10-30 19:01:39

标签: ruby sinatra

我正在创建一个班级。我从名为ROLL_CALL的哈希中提取数据。 all方法应返回Team个对象的数组。

require_relative "./team_data"
class Team
  attr_reader :name
  def intialize (name)
    @name = name
    def all
      all_teams = []
      TeamData::ROLL_CALL.each do |team, info|
        all_teams << Team.new(team)
      end
      all_teams
    end
  end
end

当我尝试拨打Team.all时,我会获得all的未定义方法。

1 个答案:

答案 0 :(得分:0)

您的代码没有正确构建。 def all应位于顶层并声明为类样式方法。还有其他一些值得修复的事情:

require_relative "./team_data"

class Team
  def self.all
    TeamData::ROLL_CALL.map do |team, info|
      Team.new(team)
    end
  end

  attr_reader :name

  def intialize (name)
    @name = name
  end
end

使用map代替创建一个临时数组并使用each将内容干扰到其中只是为了最终返回它,因为这正是map为你做的事情