Столбец "Touch" updated_at в Rails 2.3.2
У меня есть процесс, который выполняется через кучу моделей ActiveRecord, выполняет некоторую обработку и сохраняет модели снова. Часто обработка не приводит к изменениям атрибутов, поэтому столбец updated_at
никогда не изменяется (даже если вызывается сохранение).
Я бы предпочел не отключать частичные обновления (в общем, они полезны). Я предполагаю, что мои два варианта:
- Добавить отдельный столбец временной отметки в модель (т.е. '
processed_at
') и управлять ею самостоятельно, хотя это кажется немного расточительным/избыточным.
- Или каким-то образом переопределить управление атрибутом
updated_at
?
Я слышал, что Rails 3 будет иметь метод "touch", который будет именно тем, что я ищу.
Любые идеи/варианты/мнения?
Ответы
Ответ 1
На самом деле метод touch
уже находится в Rails 2.3.x, поэтому вы можете просто сделать:
model.touch
Обновить столбец updated_at
. В качестве альтернативы, для обновления другого столбца с текущей датой и временем используйте:
model.touch(:column_name)
Ответ 2
Теперь, когда линия 2.3.x пришла и ушла, более окончательный ответ заключается в том, что прикосновение не попало в ActiveRecord, пока 2.3.8. Таким образом, любой пользователь, использующий Rails 2.3.2 (поскольку OP был - и, как я сейчас есть), должен найти другой способ "коснуться" своих записей.