gpt4 book ai didi

ruby-on-rails - Rails 中的 protected 和私有(private)方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:18:54 34 4
gpt4 key购买 nike

Ruby 中的方法可见性(公共(public)、 protected 和私有(private)方法)在 this blog post 等地方得到了很好的解释。 .但在 Ruby on Rails 中,由于框架的设置方式,它似乎与在常规 Ruby 应用程序中略有不同。那么,在 Rails 模型、 Controller 、助手、测试等中,什么时候适合/不适合使用 protected 或私有(private)方法?

编辑:感谢您到目前为止的回答。我了解 Ruby 中 protected 和 private 的概念,但我正在寻找更多关于在 Rails 应用程序的各个部分(模型、 Controller 、助手、测试)的上下文中使用这些类型的可见性的典型方式的解释.例如,公共(public) Controller 方法是操作方法,应用程序 Controller 中的 protected 方法用于需要被多个 Controller 访问的“辅助方法”等。

最佳答案

对于模型,其思想是公共(public)方法是类的公共(public)接口(interface)。公共(public)方法旨在供其他对象使用,而 protected /私有(private)方法则对外部隐藏。

这与其他面向对象语言中的做法相同。

对于 controllers 和 测试,请随心所欲。 Controller 和 测试类仅由框架实例化和调用( 是的,我知道理论上您可以从 View 中获取 Controller ,但如果您这样做,无论如何都会有些奇怪 )。由于没有人会直接创建这些东西,因此没有什么可“保护”的。

附录/更正:对于 Controller ,您应该将“helper”方法标记为 protected private,并且只有操作本身应该是公开的。该框架永远不会将任何传入的 HTTP 调用路由到非公开的操作/方法,因此您的辅助方法应该以这种方式受到保护。

对于助手来说,方法是 protected 还是私有(private)的都没有区别,因为它们总是被“直接”调用。

当然,如果能让您更容易理解,您可以在所有这些情况下将内容标记为 protected 。

关于ruby-on-rails - Rails 中的 protected 和私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4495078/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com