1

我正在编写一个应用程序,我需要比较两个 :datetime 字段并将差异显示为从记录开始的“经过”时间。我认为我的代码是正确的,但我不断收到以下错误。有人可以告诉我我做错了什么吗?

Error on view:
undefined method `-' for nil:NilClass line 26:
26:     <td><%= link_to call.elapsed_time, call %></td>

Call.rb (abbreviated)
before_create :set_dispatched_time

def set_dispatched_time
  self.dispatched_time = Time.now
end

def elapsed_time
  self.dispatched_time - Time.now
end

我在 PG 中的字段设置为 :datetime 以便我可以计算时间(我确实将它们作为字符串.. ooops)但由于某种原因它没有计算。我是否需要先调用 Time.parse 或类似的方法?我不确定该往哪个方向走。我只想从 Time.now 中减去 dispatched_time 字段

4

1 回答 1

3

根据错误消息,您的self.dispatched_time不存在,它为零。这可能是因为before_create第一次将对象持久化到数据库中时调用,并且此特定实例尚未保存。

首先尝试确保这个变量有一个值,或者如果它没有被分配,则分配一个默认值。例如:

def elapsed_time
  Time.now - (self.dispatched_time || Time.now)
end
于 2012-06-22T16:55:56.703 回答