nil的未定义方法`round':计算日期之间差异时的NilClass

时间:2016-01-15 17:39:46

标签: ruby-on-rails ruby

此时我的代码崩溃了。我的模型规格工作正常,确实在计算日期之间的差异。但是,此时我的功能测试正在崩溃(加上我在浏览器中的应用程序)。

我的回调方法:

after_create :calculate

这是终端的规格失败报告:

5) Deleting rents Deleting rent for a given house
 Failure/Error: let!(:rent){FactoryGirl.create(:rent,amount:15000,house:runda,tenant:tenant,date:Date.today)}
 NoMethodError:
   undefined method `round' for nil:NilClass
 # ./app/models/rent.rb:96:in `interest_day'
 # ./app/models/rent.rb:41:in `interest_charge'
 # ./app/models/rent.rb:50:in `chargeable_balance'
 # ./app/models/rent.rb:54:in `current_status'
 # ./app/models/rent.rb:9:in `calculate'
 # ./spec/features/deleting_rents_spec.rb:9:in `block (2 levels) in <top (required)>'

这是方法interest_day

def interest_day
  return self.date - self.date.mday + tenant.organization.interest_date
end

1 个答案:

答案 0 :(得分:0)

好吧,由于缺少太多的代码,所以无法直接帮助您(坦率地说,在这里切割和粘贴它并期望人们在他们的大脑中调试它可能很多......)

在这种情况下,你必须弄清楚

  1. 哪个变量是nil
  2. 为什么nil
  3. 在您的示例中,xyz.round的第96行会有一些电话rent.rbxyz为零(正如消息所说的那样)。找出原因,你的问题就会消失。

    您可以使用puts ">>>>> #{xyz.inspect}"logger.debug "..."之类的调试语句来填充代码,或者如果您愿意,可以了解如何单步执行调试器。