使用问题与rails中的模块有什么区别?

时间:2015-12-16 08:49:32

标签: ruby-on-rails activesupport-concern

刚才我开始在rails中使用Concerns,但我怀疑为什么我们会关注,因为我们可以在模块上实现相同的功能。混合的概念。所以请任何人告诉我关于使用问题而不是使用模块。

3 个答案:

答案 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文件夹。两者都可以通过包含或扩展到类中来使用。