我正在使用ActiveSupport :: Concern,我知道有一些方法可以将这些组织到/ app / model / concern文件夹中以表示通用问题,但如果我想将一个问题与特定模型联系起来,我已经看到了一些方法,并希望看到一些利弊
class Alert < ActiveRecord::Base
include Shareable
class Alert
module Shareable
extends ActiveSupport::Concern
或
module Alert::Shareable
extends ActiveSupport::Concern
或
module Alert
module Shareable
extends ActiveSupport::Concern
不确定是否有最好的方法可以做到这一点,或者我是否应该只使用模块或类模块。我知道它是微不足道的,它们似乎都有效,但在组织上却不确定是否有最好的方法。谢谢!
答案 0 :(得分:2)
如果您的模型是Alert
,那么您绝对不想要module Alert
(#3)。 #1和#2基本相同,但更常见的是#2风格。
让我再解释一下。
module X::Y
样式仅在已定义X
时才有效。它说&#34;在Y
下创建此模块X
并且我不在乎X
是一个类或模块,只是这样做。
对于#3,由于Alert
已定义为class
,因此您会收到此错误:TypeError: Alert is not a module
。
如果您需要更多说明,请与我们联系。