28

刚才我开始在 Rails 中使用 Concerns,但我怀疑我们为什么要关注,因为我们可以在模块和混合概念上实现相同的目标。所以请任何人告诉我们shat是使用关注点而不是使用模块。

4

3 回答 3

16

这里有很好的描述:http: //api.rubyonrails.org/classes/ActiveSupport/Concern.html

简而言之:

  • 关注点允许您使用#includedand#class_methods而不是self.includedhook 来ClassMethods创建额外的模块;

  • 关注点为您提供了更好的相互包含的模块的依赖解决方案;

于 2017-10-11T10:58:58.630 回答
7

ActiveSupport::Concernclass_methods为您的模块添加一些方便的功能(即)。您可以使用“纯”ruby 模块而不扩展它。本质上,您创建了一个模块,并将其混入到一个类中。这个模块是否扩展 AS::Concern 没关系,机制是一样的。

于 2015-12-16T09:14:17.273 回答
2

当您写下关注时,这意味着您正在制作一个模块。我的意见是关注和模块是相似的。关注点可以作为模型、控制器出现在某个地方,您可以在这里为自己编写模块。通用模块写在 lib 文件夹中。两者都可以通过包含或扩展到类中来使用。

于 2015-12-16T09:18:42.030 回答