Это можно сделать, просто переписав методы модуля ActiveRecord :: Timestamp. На самом деле не перезаписывает весь модуль. Мне нужно для достижения этой же цели, так как я работаю с устаревшей базой данных. Я нахожусь на рельсах 3, и я начал следовать методологии, как обезопасить мой код с перезаписью функциональности рельсов.
Сначала я создаю базовый проект, с которым я работаю, и создаю файл с именем этого в инициализаторах. В этом случае я создал active_record.rb. И внутри файла я поместил код для переопределения двух методов, которые контролировали метку времени. Ниже приведен пример моего кода:
module ActiveRecord
module Timestamp
private
def timestamp_attributes_for_update #:nodoc:
["updated_at", "updated_on", "modified_at"]
end
def timestamp_attributes_for_create #:nodoc:
["created_at", "created_on"]
end
end
end
ПРИМЕЧАНИЕ: Я также хотел бы отметить, что такого рода исправления обезьян, чтобы заставить вещи работать, не одобряются и могут нарушать обновления, поэтому будьте осторожны и полностью осознайте, что вы хотите делать.
Обновление:
- Изменить имена столбцов меток времени с символа на строку в соответствии с api change . Спасибо Techbrunch за привлечение внимания к этим изменениям API.