我正在使用 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
更多,将是@my_module_class
作为包含类中的属性的变量MyModule
(顺便说一句:我想让它仅在内部@my_module_class
“可见”MyModule
,因为它仅用于该模块)?是否有一些关于如何处理我试图在included do ... end
上述代码块中实例化的情况的“高级”示例或教程?你有什么建议?