计算Rails中的经过时间

时间:2012-06-22 16:48:01

标签: ruby-on-rails-3 datetime model

我正在编写一个应用程序,我需要比较两个: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字段

1 个答案:

答案 0 :(得分:3)

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

首先尝试确保此变量具有值,或者在未分配的情况下指定默认值。 E.g:

def elapsed_time
  Time.now - (self.dispatched_time || Time.now)
end