0

我正在制作一个简单的任务管理器,除了completed:boolean列之外,我还有一个completed_time:datetime列,当用户将任务标记为已完成时,我需要存储时间。

当用户检查任务是否已完成时,有一个解决方案用hidden_fieldJS 填充当前时间,但我认为这不是一个好主意,必须在控制器或模型级别完成。

所以,现在我的Task模型中有这个:

before_update :add_completed_time
.
.
.
def add_completed_time
  if self.completed?
    self.completed_time = DateTime.now
  end
end

但是它completed_time每次都会更新列,当任务在完成后更新时(例如,当我将它标记为时archived)。

当任务被标记为已完成时,我如何才能调用此方法?

谢谢!

4

1 回答 1

0

只需再添加一个条件来检查是否completed_time已经有一个值。如果是,请不要更新它。

def add_completed_time
  if self.completed? and self.completed_time == nil
    self.completed_time = DateTime.now
  end
end
于 2013-07-16T06:20:50.243 回答