nil的未定义方法'+':NilClass

时间:2013-03-09 18:37:48

标签: ruby-on-rails-3.2

这是我的班级:

class Combatant < ActiveRecord::Base
  attr_accessible :resource_current

  def change_resource(amount)
    resource_current += amount
    if resource_current < 0
      resource_current = 0
    elsif resource_current > 100
      resource_current = 100
    end
  end
end

在Combatant类的对象上执行change_resource时,我得到:

undefined method `+' for nil:NilClass

当然,resource_current已初始化,其值为6.

当我将方法更改为:

  def change_resource(amount)
    self.resource_current += amount
    if resource_current > 100
      resource_current = 100
    elsif resource_current < 0
      resource_current = 0
    end
  end

它是:

undefined method `<' for nil:NilClass

所以我添加另一个'self':

  def change_resource(amount)
    self.resource_current += amount
    if resource_current > 100
      resource_current = 100
    elsif self.resource_current < 0
      resource_current = 0
    end
  end

该方法现在正在运行。 为什么?为什么我不需要另一个'self'作为第一个条件(如果resource_current> 100)? 为什么我需要“自我”?

1 个答案:

答案 0 :(得分:0)

正如我在上面的评论中所写: 它最终对我有用,没有奇怪的语法和无法解释的错误 - 我能想到的唯一解释是我在测试过程中弄乱了一些东西。