1
我正在使用ActiveSupport :: Concern,并且我知道有几种方法可以将这些内容组织到/ app/model /关注文件夹中,以表示一般性问题,但如果我想要绑定关注/具体型号我也看到了一些办法,并希望看到一些利弊Rails 3 - 关注模块或类
class Alert < ActiveRecord::Base
include Shareable
关注在/ app /模型警报文件夹
class Alert
module Shareable
extends ActiveSupport::Concern
或
module Alert::Shareable
extends ActiveSupport::Concern
或
module Alert
module Shareable
extends ActiveSupport::Concern
不能确定是否有这样做一个最好的办法,或者我应该只使用模块或类模块。我知道这是微不足道的,他们都似乎工作,但在组织上不知道是否有最好的方法。谢谢!
奥斯汀谢谢你,我已经得到了一个地步,我看到有三个使用,并不总是如100%,有一种方法。!这是一个疯狂的使用方式,你已经为我完美地清理了它,现在我正在做一个大规模的重构,我真的很喜欢理解事物的来龙去脉。再次感谢您的帮助! – bokor 2012-03-29 15:37:07
没问题。只要将类和模块都视为常量,并根据语义上的含义将它们嵌套在一起即可。类可以在模块下,反之亦然。如果最终它可以共享其他事物是有意义的,那么将它移动到命名空间的顶部。意思是,不要将它嵌入Alert中。干杯。 – Austin 2012-03-29 20:40:31
同意,我已经用第二种方式比较简单了,即模块Alert :: Shareable。如果您使用第一个类,即类模块,那么您会遇到由多个Alert定义混淆工具的地方。例如,Annotate gem会给出超类不匹配错误,并且不会注释Alert模型。我在rails dev控制台中也遇到了一些问题。也就是说,这两种风格在正在运行的Rails应用中都能正常工作。 – Alric 2012-11-07 23:53:56