Ответ, который я окончательно определил:
В краткосрочной перспективе использование этих методов в контроллерах - это нормально.Если они определяют выход, тогда, ОК, они могут остаться там.Они используются только в модели.
Есть пара вещей, на которые стоит обратить внимание, которые указывают на то, что они выросли, и должны пойти в другое место:
- В одном случаеМне нужен был доступ к канонической сериализации объекта.В этот момент он перешел в модель как метод модели.
- В другом случае я обнаружил, что форматировал все метки времени одинаково.У меня есть стандартный
@ajaxify
декоратор, который выполняет такие вещи, как установка Content-Type
заголовков, кодирование JSON и т. Д. В этом случае я переместил туда стандартное форматирование даты и времени - когда кодировщик JSON достигнет даты и времени (ранее не сериализуемых)это всегда относится к нему (секунды для меня). - В третьем случае я понял, что повторно использую эту функцию в паре контроллеров.Для этого я вытащил его в общий класс (как предложил другой ответ) и использовал его для определения своего «веб-API».Я использовал этот шаблон раньше - это имеет смысл для группировки аналогично используемых данных (таких как данные временных рядов или списки топ-N).
Я подозреваю, что есть еще что-то, но в основном я не думаю, что там все так похоже, как я думал, что они были изначально.В настоящее время я рад думать о них как о соглашении для простых объектов в нашей кодовой базе (small-ish, new-ish), с пониманием того, что после нескольких итераций может появиться лучшее решение.Тем временем они остаются в контроллере и определяют мой интерфейс только для AJAXy-JSON.