我想隐藏主要Model方法中的某些实现,因为代码清晰 . 我不希望我的模型包含许多巨大的方法,只有最清晰和冗长的功能 .
例如:
class SomeModel
#included stuff
#fields & attrs
def modelMethod
variable = functionality1(functionality2)
if some condition
functionality3
else
functionality4
end
end
我应该将我的功能方法放在同一模型文件末尾的 private
或 protected
部分,还是应该将它们放入帮助文件中?
如果我是对的,帮助程序中的代码仅用于View . 这有什么约定?
2 回答
让
private
或protected
与您尝试进行的清理类型无关 .这与继承方法可见性/访问有关(尽管继承显然可以用于可重用性) .
方法取决于可重用性 . 为什么不利用顾虑?假设我们有
SomeModel
并希望多个模型来实现暂停 .然后添加您的模型关注点 .
或者,如果这只适用于单个模型,但希望保持模型严格的数据库操作(不是面向业务),那么您可能会有命名空间问题 .
http://api.rubyonrails.org/v5.0/classes/ActiveSupport/Concern.html
如果您有各种模型中使用的方法或方法集:Rails Concerns
这与private / protected不同,您可以关注私有/受保护的方法 . 这就是如何提取重复 .
如果你有一个模型需要的方法,只有模型(不是模型的子类,而且从不在类外调用:
private
如果您有一个模型及其子类所需的方法,但不是来自模型外部的方法:
protected
如果你需要能够从课外调用该方法:既不是
this answer详细介绍了这些内容