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