ruby-on-rails - 为什么我们需要 ClassMethods 和 InstanceMethods?

标签 ruby-on-rails ruby module

我读了API对于 ActiveSupport::Concern。有ClassMethodsInstanceMethods,我们可以把类方法放在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/

相关文章:

ruby - Google Cloud 如何在使用环境变量 CLOUDSDK_CORE_PROJECT 中设置项目

java - GWT:片段和模块

jquery、rails 3 和 session

ruby-on-rails - 将字符串映射到 Ruby Rails 中的另一个字符串

ruby-on-rails - 如何使用同一张表为一组模型创建装饰器?

html - Wicked PDF 忽略 Bootstrap 网格系统

ruby - children 变量数组中的这段代码是什么意思?

ruby - rubocop "undefined method"代表一切

javascript - 为什么这个 javascript 对象在使用和不使用模块模式时表现不同?

perl - 使用闭包修改 Perl BEGIN block 中的类