2013-07-16 2 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 
Смежные вопросы