これは私のクラスです:
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
だから私は別の「自己」を追加します:
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
メソッドは現在機能しています。なんで?最初の条件 (resource_current > 100 の場合) に別の「自己」が必要ないのはなぜですか? なぜ「自分」が必要なのですか?