Ruby 中的方法可见性(公共、受保护和私有方法)已在以下地方得到了很好的解释:这篇博文 http://weblog.jamisbuck.org/2007/2/23/method-visibility-in-ruby。但在 Ruby on Rails 中,由于框架的设置方式,它似乎与常规 Ruby 应用程序中略有不同。那么,在 Rails 模型、控制器、帮助器、测试等中,何时适合/不适合使用受保护或私有方法?
Edit: 谢谢到目前为止的回答。我了解 Ruby 中受保护和私有的概念,但我更多地寻求解释这些类型的可见性在 Rails 应用程序的各个部分(模型、控制器、帮助程序、测试)的上下文中使用的典型方式。例如,公共控制器方法是操作方法,应用程序控制器中的受保护方法用于需要被多个控制器访问的“帮助方法”等。
对于模型来说,公共方法是类的公共接口。公共方法旨在供其他对象使用,而受保护/私有方法将对外部隐藏。
这与其他面向对象语言中的做法相同。
对于控制器和测试,请按照您的意愿进行。 控制器和测试类仅由框架实例化和调用(是的,我知道理论上你可以从视图中获取控制器,但如果你这样做,无论如何都会有些奇怪罢工>)。由于没有人会直接创建这些东西,因此没有什么可以“保护”的。
附录/更正:对于控制器,您应该将“helper”方法标记为protected私有,并且只有操作本身应该是公共的。该框架永远不会将任何传入的 HTTP 调用路由到非公开的操作/方法,因此您的帮助器方法应该以这种方式受到保护。
对于助手来说,方法是受保护的还是私有的都没有什么区别,因为它们总是被“直接”调用。
当然,如果可以让您更容易理解,您可以在所有这些情况下标记受保护的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)