Для меня это больше похоже на помощника. Попробуйте это в справке вашего приложения:
def formatted_date(date)
date ? date.to_s(:date) : nil
end
Форматирование не является чем-то, что действительно принадлежит модели (именно по той причине, которую вы обнаружили ... вставлять такой общий код в каждую модель раздражает)
Если вы действительно хотите сделать, как вы говорите, то, что вы могли бы сделать, - это просто установить суперкласс ActiveRecord и добавить туда функцию, которую вы хотите. Затем он будет доступен для всех ваших моделей. Остерегайтесь того, что обезьяноподготовка может привести к непредсказуемому и неопределенному поведению и использовать на свой страх и риск! Это также довольно забавно:)
class ActiveRecord::Base
def formatted_start_date
start_date ? start_date.to_s(:date) : nil
end
end
Просто отметьте это где-то, что будет запущено раньше, чем что-либо еще в вашем приложении, и оно будет динамически добавлять метод в базовый класс ваших моделей, делая его доступным для использования.
Или вы можете создать миксин для всех ваших моделей, но это кажется немного излишним для одного метода.