我正在使用Ruby on Rails 3.2.2。 我正在实现一个模块,并使用RoR ActiveSupport :: Concern特性将其包含在我的类中。 它使
我的疑问是:在
included do ... end
块可用,使代码在包含模块的类的类上下文中执行。我的疑问是:在
included do ... end
块中不应该包含什么?也就是说,例如,是否制作以下内容是“常见”/“好”的做法?module MyModule
extend ActiveSupport::Concern
class MyModuleClass
attr_accessor :attr1, :attr2, :attr3
def initialize(attrs)
@attr1 = attrs[:attr1]
@attr2 = attrs[:attr2]
@attr3 = attrs[:attr3]
end
end
included do
@my_module_class = MyModuleClass.new(some_attrs)
end
end
< p >更多的话,< code >@my_module_class 变量将作为< code >MyModule类的包含类的属性可用(顺便说一句:我想让< code >@my_module_class 仅在< code >MyModule 内部“可见”,因为它只打算在该模块中使用)。是否有一些关于如何处理我正在尝试在上面的代码中的< code >included do ... end 块中实例化的情况的“高级”示例或教程?您对此有何建议?
included do ... end
块中不应包含什么?”有关,例如,与我的情况相关。其余部分是“更多”,即使对我来说非常重要。然而,我不想让所有的MyModuleClass
实例都成为MyModule
的实例,而是只在MyModule
内部可用;此外,在类定义内部的include MyModule
语句是隐式/明显的,因为该模块旨在被包含在一个类中。 - user12882