我正在编写一个应用程序,我需要比较两个: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字段答案 0 :(得分:3)
根据错误消息,您的self.dispatched_time
不存在,它是零。这可能是因为第一次将opject持久保存到数据库中时调用before_create
,并且尚未保存此特定实例。
首先尝试确保此变量具有值,或者在未分配的情况下指定默认值。 E.g:
def elapsed_time
Time.now - (self.dispatched_time || Time.now)
end