Обновление. См. комментарий ниже, который ссылается на верное объяснение protected
/private
в Ruby. Это был глубоко укоренившийся предрассудок, оставшийся со времен моей работы на Java. Единственная важная часть, оставшаяся от моего ответа, заключается в том, что методы контроллера, которые не являются действиями, не должны быть public
(или, по крайней мере, ваши маршруты должны их защищать).
Наследование одной таблицы — прекрасный пример того, когда protected
полезен на уровне модели, поскольку это одно из наиболее распространенных применений наследования.
На уровне контроллера вспомогательные методы, определенные на ApplicationController
, должны быть помечены как protected
— если бы они были private
, другие контроллеры не смогли бы получить к ним доступ, но если они public
, Rails будет рассматривать их как действия.
Лично я обнаружил, что использую наследование классов чаще, чем многие мои друзья и коллеги, даже в приложениях Rails. Поскольку я использую его часто (и после того, как закончил свои дни Java), я предпочитаю protected
для всех вспомогательных методов, чтобы дать свободу любому (обычно самому себе), кто хочет расширить класс - если только я действительно не смущен одним, тогда Я отмечаю это private
. :)
person
Ian Terrell
schedule
22.05.2009