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