Подтвердить что ты не робот

Столбец "Touch" updated_at в Rails 2.3.2

У меня есть процесс, который выполняется через кучу моделей ActiveRecord, выполняет некоторую обработку и сохраняет модели снова. Часто обработка не приводит к изменениям атрибутов, поэтому столбец updated_at никогда не изменяется (даже если вызывается сохранение).

Я бы предпочел не отключать частичные обновления (в общем, они полезны). Я предполагаю, что мои два варианта:

  • Добавить отдельный столбец временной отметки в модель (т.е. 'processed_at') и управлять ею самостоятельно, хотя это кажется немного расточительным/избыточным.
  • Или каким-то образом переопределить управление атрибутом updated_at?

Я слышал, что Rails 3 будет иметь метод "touch", который будет именно тем, что я ищу.

Любые идеи/варианты/мнения?

4b9b3361

Ответ 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 был - и, как я сейчас есть), должен найти другой способ "коснуться" своих записей.