假设我有一个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
区块之外或之内的差异
答案 0 :(得分:0)
当关注点包含在类中时,include
和class_methods
允许接收类继承这些方法。
included
添加了实例方法,而class_methods
添加了类方法。
另一方面,如果您的问题是include Magic
的位置之间的差异,那么该课程的运作方式就没有差异。