我读了API对于 ActiveSupport::Concern。有ClassMethods
和InstanceMethods
,我们可以把类方法放在ClassMethods
中。
但是 M
的宿主可以使用 M
中定义的方法,不是吗?为什么我不能只写:
module M
def self.x
end
def y
end
end
而不是:
module M
module ClassMethods
def x
end
end
module InstanceMethods
def y
end
end
end
最佳答案
您可能对 Yehuda's take on this pattern 感兴趣.我认为其中一些原因是历史性的,因为它们并不是真正需要的,除非您手动执行 Ruby 将通过 include
自动执行的操作。和 extend
.
关于ruby-on-rails - 为什么我们需要 ClassMethods 和 InstanceMethods?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7463440/