Rails 3 - проблемы с модулями или классами - PullRequest
1 голос
/ 29 марта 2012

Я использую 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 Ответ

2 голосов
/ 29 марта 2012

Если ваша модель Alert, вы определенно не хотите module Alert (# 3).# 1 и # 2 в основном одинаковы, но чаще вы видите стиль # 2.

Позвольте мне объяснить немного подробнее.

Стиль module X::Y будет работать, только если X уже был определен.Он говорит «создайте этот модуль Y в X, и мне все равно, является ли X классом или модулем, просто сделайте это.

Для # 3, поскольку Alert уже определенокак class, вы получите эту ошибку: TypeError: Alert is not a module.

Дайте мне знать, если вам нужно больше разъяснений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...