在以下(简化)Rails代码块中。有没有办法从class_methods部分调用my_internal_method
?我还是Ruby / Rails的新手,我阅读了ActiveSupport::Concern
的文档,但它没有最有意义。
module MyConcern
extend ActiveSupport::Concern
class_methods do
def bar
my_internal_method
end
end
def foo
my_internal_method
end
private
def my_internal_method
end
end
或者,有没有办法在bar
中调用foo
?这是我开始走这条道路的真正原因。
思想?
答案 0 :(得分:0)
您可以从实例方法
调用类方法def foo
self.class.bar
my_internal_method
end
要从类方法调用实例方法,您需要实例化实例对象
def bar
new.send(:my_internal_method)
end
请注意,我们必须使用send
,因为my_internal_method
是私有的,因此无法通过明确的接收方访问(即您无法new.my_internal_method
)