您是否曾在Rails中使用受保护的可见性?

pez*_*ser 14 private ruby-on-rails protected public

忏悔:我只对我的方法使用私人公众可见度!

我觉得这是件坏事.但是在Rails中它似乎并不是一个问题.

有没有人在Rails中有一个例子,如果不使用受保护的可见性将是一个很大的错误?

Ian*_*ell 9

更新 - 请参阅下面的评论链接到Ruby中protected/private真实解释.事实上,这是我在Java时代遗留下来的一种根深蒂固的偏见.我的答案唯一重要的部分是不应该是动作的控制器方法public(或者至少你的路线应该保护它们).

单表继承是何时protected在模型层中有用的完美示例,因为它是继承的最常见用途之一.

在控制器层中,定义的辅助方法ApplicationController应标记为protected- 如果它们是private其他控制器将无法访问它们,但如果它们是publicRails,则将它们视为操作.

就个人而言,我发现我使用类继承比我的许多朋友和同事更多,甚至在Rails应用程序中也是如此.因为我经常使用它(并且从我的Java时代开始),我赞成protected所有帮助方法为任何想要扩展课程的人(通常是我自己)提供自由 - 除非我真的对一个人感到尴尬,然后我标记它private.:)

  • "在ApplicationController上定义的辅助方法应该被标记为受保护 - 如果它们是私有的,其他控制器将无法访问它们" - fyi,这是不正确的.请参见此处的示例:http://pastie.org/842898.Ruby中的受保护/私有是关于'自我'和接收者,而不是继承."请注意,与Java等语言不同,继承在确定Ruby中的方法可见性方面绝对不起作用." - http://weblog.jamisbuck.org/2007/2/23/method-visibility-in-ruby (3认同)