Rails 3 - 对模块或类的关注

时间:2012-03-29 04:05:30

标签: ruby-on-rails model

我正在使用ActiveSupport :: Concern,我知道有一些方法可以将这些组织到/ app / model / concern文件夹中以表示通用问题,但如果我想将一个问题与特定模型联系起来,我已经看到了一些方法,并希望看到一些利弊

class Alert < ActiveRecord::Base
   include Shareable
/ app / models / alert文件夹中的问题

class Alert
   module Shareable
      extends ActiveSupport::Concern

module Alert::Shareable
   extends ActiveSupport::Concern

module Alert
   module Shareable
      extends ActiveSupport::Concern

不确定是否有最好的方法可以做到这一点,或者我是否应该只使用模块或类模块。我知道它是微不足道的,它们似乎都有效,但在组织上却不确定是否有最好的方法。谢谢!

1 个答案:

答案 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

如果您需要更多说明,请与我们联系。