5

假设我有以下命名空间,其中一个Base模块定义了一些可以重用的方法

module MyNameSpace
  module Magic
    extend ActiveSupport::Concern

    class_methods do 
      def magic_field(field_name)
        # Defines methods and attributes based on field name
      end
    end
  end
end

有什么区别(如果有的话)

module MyNameSpace
  module Foo
    extend ActiveSupport::Concern
    include Magic

    included do
      magic_field(:foo)
    end
  end
end

module MyNameSpace
  module Foo
    extend ActiveSupport::Concern

    included do
      include Magic
      magic_field(:foo)
    end
  end
end

(问题是关于include Magic在街区外或在街区内的区别included

4

1 回答 1

3

当关注点包含在一个类中时,它include允许class_methods接收类继承这些方法。

included在添加类方法的同时添加实例class_methods方法。

资料来源:Rails 关注文档

另一方面,如果您的问题是 的位置之间的include Magic差异,则该类的功能没有区别。

于 2017-03-14T17:08:01.347 回答