О размещении шаблона стратегии в рельсах

Я реализую шаблон стратегии в Rails, где у меня есть такие модели, как пользователь, элемент, категория, и мне нужно рекомендовать элементы для пользователей в зависимости от различных алгоритмов (стратегий), которые пользователь выбирает в поле зрения.

У меня есть класс рекомендаций, который имеет интерфейс рекомендации (user_id, strategy) и возвращает массив item_id. Рекомендуемая стратегия будет определена во время выполнения в зависимости от варианта, который пользователь выберет в представлении. Я поместил рекомендуемый интерфейс в каталог / lib, а стратегии - в каталог / lib / strategy.

Я хочу убедиться, поместил ли я файлы в соответствующие каталоги или мне нужно разместить рекомендуемый класс и все стратегии в моделях или где-либо еще. Я действительно в замешательстве.


person Venu Chitta    schedule 30.08.2015    source источник


Ответы (1)


В Rails весь специфичный для домена код принадлежит /app, тогда как /lib зарезервирован для внешних зависимостей и общего кода.

Вы можете найти полезные "служебные объекты", они принадлежат /app/services. Они не являются ActiveRecord классами и не имеют базы данных, они обычно работают (выполняют услуги) с другими моделями.

Вы найдете много информации о том, как создавать сервисы, например. http://sporto.github.io/blog/2012/11/15/a-pattern-for-service-objects-in-rails/. Также есть отличный Railscast (только для подписчиков) http://railscasts.com/episodes/398-service-objects.

person Jeriko    schedule 30.08.2015