Ruby on rails ActiveSupport::放在包含块内或模块体中的关注代码
假设我有一个带有Ruby on rails ActiveSupport::放在包含块内或模块体中的关注代码,ruby-on-rails,ruby,ruby-on-rails-5,activesupport-concern,Ruby On Rails,Ruby,Ruby On Rails 5,Activesupport Concern,假设我有一个带有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
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
两者之间有什么区别(如果有的话)
及
(问题是
include Magic
在include
块的外部或内部的区别)当关注点包含在类中时,include
和class\u方法允许接收类继承这些方法
included
添加实例方法,而class\u方法
添加类方法
资料来源:
另一方面,如果你的问题是include Magic
的位置不同,那么类的功能就没有区别。我不理解否决票是一个有效的问题。是的,我的问题是关于include Magic
块的外部或内部
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