2013-07-16 50 views
0

我正在做一个简单的任务管理器,除了completed:boolean列我有一个completed_time:datetime列,我需要存储时间,当用户标记任务完成。更新其中一个参数时,其他更新

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

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

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

但更新每次completed_time列,当任务完成后,更新(对前,当我将其标记为archived)。

如何在任务被标记为完成时调用此方法?

谢谢!

回答

0

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

def add_completed_time 
    if self.completed? and self.completed_time == nil 
    self.completed_time = DateTime.now 
    end 
end