我正在使用Ruby on Rails 3.2.2。我正在實施一個模塊,並通過使用RoR ActiveSupport::Concern功能將其包含在我的課程中。它提供了included do ... end
塊中的代碼,這些代碼在包含該模塊的類的類上下文中執行。「包含的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
更多,將作爲在包括類的MyModule
(順便說一句一個屬性@my_module_class
變量:我想使@my_module_class
是「看得見」 只內部到MyModule
自它只打算在該模塊中使用)?是否有一些「高級」示例或教程來說明如何處理上述代碼的included do ... end
塊中的實例?你有什麼建議?
謝謝,但「主要」問題與「我應該*不包含在'包含的do ... end'塊中的內容有關嗎?」 *,例如*,與我的情況相關。其餘的是「更多」,即使它對我來說非常重要。但是,我並不希望將MyModuleClass的所有實例都作爲MyModule的一個實例,而只是將它們內部提供給MyModule。此外,類定義中的「包含MyModule」語句是隱含/顯而易見的,因爲模塊旨在包含在類中。 – user12882
「我不該做什麼」的問題太模糊了,我不能真正回答,但請參閱上面的「編輯1」,我試圖解決您所問的問題。 –