Например, почему помощники по дате написаны так:
time_ago_in_words(@from_time)
Вместо этого:
@from_time.time_ago_in_words
Это явная ошибка проектирования / несоответствие? Или есть какая-то причина для этого?
Помощники - это методы объекта представления, а не объекта, который они отображают. Это имеет смысл в смысле ОО, поскольку представление отображает данные в определенном формате, поэтому отвечает за преобразование моделей в этот формат.
Отличный вопрос!
Большинство помощников предназначены для выбора даты / времени.
http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html
Я предполагаю, что тот, кто написал это, хотел пару утилитарных методов, поэтому добавил time_ago_in_words и distance_of_time_in_words к своему помощнику с помощью select.
Поскольку time_ago_in_words и distance_of_time_in_words сфокусированы на настоящем моменте (т. Е. Вы можете захотеть его локализовать), разработчик может почувствовать, что помощник не плохое место для них.