我是 Ruby 新手,来自 C# 世界。在 C# 中,这样做是合法的:
public class Test
{
public void Method()
{
PrivateMethod();
}
private void PrivateMethod()
{
PrivateStaticMethod();
}
private static void PrivateStaticMethod()
{
}
}
是否可以在 Ruby 中做类似的事情?
一点上下文:我有一个 Rails 应用程序......其中一个模型有一个私有方法,可以设置一些依赖项。有一个类方法可以创建模型的初始化实例。由于遗留原因,模型的某些实例未正确初始化。我添加了一个实例方法来初始化我想要执行相同初始化逻辑的“未初始化”实例。有没有办法避免重复?
样本:
class MyModel < ActiveRecord::Base
def self.create_instance
model = MyModel.new
model.init_some_dependencies # this fails
model
end
def initialize_instance
// do some other work
other_init
// call private method
init_some_dependencies
end
private
def init_some_dependencies
end
end
我试图将我的私有方法转换为私有类方法,但仍然出现错误:
class MyModel < ActiveRecord::Base
def self.create_instance
model = MyModel.new
MyModel.init_some_dependencies_class(model)
model
end
def initialize_instance
# do some other work
other_init
# call private method
init_some_dependencies
end
private
def init_some_dependencies
MyModel.init_some_dependencies_class(self) # now this fails with exception
end
def self.init_some_dependencies_class(model)
# do something with model
end
private_class_method :init_some_dependencies_class
end