ruby-on-rails - 如何将大类的私有方法从单个文件中移出
问题描述
我有一个相当大的课程,功能很多,由:
- 3种公共方法
- 20多种私有方法
- 零状态(无属性)
将我的类拆分为多个文件的最佳选择是什么,同时将 3 个公共方法保留在初始文件中,而不是让整个应用程序可以访问私有实现?
解决方案
正如评论中所建议的,您可以重新打开该类并只定义私有方法。
或者,您可以定义一个模块并将其包含在您的类中:
module FooPrivate
private
def greet
'hello'
end
end
class Foo
include FooPrivate
def hello
greet
end
end
以上在行动:
irb> Foo.new.greet
NoMethodError (private method `greet' called for #<Foo:0x00007f83ba04bd58>)
irb> Foo.new.hello
=> "hello"