Почему помощники рельсов не более объектно-ориентированы? - PullRequest
4 голосов
/ 15 апреля 2009

Например, почему помощники по дате написаны так:

time_ago_in_words(@from_time)

Вместо этого:

@from_time.time_ago_in_words

Это явная ошибка проектирования / несоответствие? Или есть какая-то причина для этого?

Ответы [ 2 ]

5 голосов
/ 15 апреля 2009

Помощники - это методы объекта представления, а не объекта, который они отображают. Это имеет смысл в смысле ОО, поскольку представление отображает данные в определенном формате, поэтому отвечает за преобразование моделей в этот формат.

2 голосов
/ 15 апреля 2009

Отличный вопрос!

Большинство помощников предназначены для выбора даты / времени.

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 сфокусированы на настоящем моменте (т. Е. Вы можете захотеть его локализовать), разработчик может почувствовать, что помощник не плохое место для них.

...