Вы правы, что если модуль тесно связан с этой конкретной моделью, то он не является хорошим кандидатом для гема / плагина.
app / helpers / предназначен для вспомогательных методов представления и не должен содержать модулейкоторые предназначены исключительно для микширования в модели.
Одно место, куда вы можете поместить модуль, находится в lib /.Это для кода, который на самом деле не подходит нигде в приложении / и часто является исходным домом слабосвязанного кода перед его перемещением в плагин (но это не жесткое и быстрое правило).Однако, поскольку ваш модуль тесно связан с вашей моделью, lib / может быть не лучшим местом для него.
Я знаю, что 37 сигналов (и других) используют концепцию «проблем» как способ сохранения взаимосвязиКод модели организован в виде модулей.Это реализуется путем создания приложения / задач / и размещения модулей там.Затем этот каталог добавляется в путь загрузки приложения в config / application.rb (config / environment.rb для Rails 2) с помощью:
config.load_paths += %W(#{Rails.root}/app/concerns)
Затем модуль можно смешать с моделью как обычно.
Вот оригинальное сообщение в блоге об этом от Jamis Buck - http://weblog.jamisbuck.org/2007/1/17/concerns-in-activerecord
Другой вариант этого, который я лично предпочитаю, хотя он не включает модули, использует этот плагин: http://github.com/jakehow/concerned_with
Надеюсь, это поможет.