刚才我开始在rails中使用Concerns,但我怀疑为什么我们会关注,因为我们可以在模块上实现相同的功能。混合的概念。所以请任何人告诉我关于使用问题而不是使用模块。
答案 0 :(得分:8)
这里有很好的描述:http://api.rubyonrails.org/classes/ActiveSupport/Concern.html
简而言之:
通过关注,您可以使用#included
和#class_methods
而不是self.included
与其他模块ClassMethods
创建挂钩;
对于相互包含的模块,问题可以为您提供更好的依赖性解析;
答案 1 :(得分:3)
ActiveSupport::Concern
为您的模块添加了一些方便的功能(即class_methods
)。您可以使用“纯”ruby模块而不扩展它。基本上,您创建了一个模块,您可以将其混合到一个类中。如果这个模块扩展AS :: Concern并不重要,机制是相同的。
答案 2 :(得分:0)
当你写关注意味着你正在制作一个模块时。我的意见是关注,模块是相似的。关注可以出现在某个地方作为模型,控制器,在这里你可以为自己编写模块。并且用一般模块写入lib文件夹。两者都可以通过包含或扩展到类中来使用。