2015-08-30 2 views
0

Je suis en train de mettre en œuvre un modèle de stratégie dans Rails où j'ai des modèles comme utilisateur, article, catégorie et besoin de recommander des articles pour les utilisateurs.A propos de l'emplacement du modèle de stratégie dans les rails

J'ai une classe de recommandation qui a une interface de recommander (user_id, stratégie) et retourne le tableau de item_id. La stratégie recommandée sera déterminée lors de l'exécution en fonction de l'option sélectionnée par l'utilisateur dans la vue. J'ai placé l'interface recommandée dans le répertoire/lib et les stratégies dans le répertoire/lib/strategy.

Je veux m'assurer que j'ai placé les fichiers dans les répertoires appropriés ou Dois-je placer la classe recommandée et toutes les stratégies dans les modèles ou ailleurs. Je suis vraiment confus.

Répondre

0

Dans Rails, tout le code spécifique au domaine appartient à /app, alors que /lib est réservé aux dépendances externes et au code partagé.

Vous pourriez trouver des "objets de service" utiles, ils appartiennent à /app/services. Ils ne sont pas ActiveRecord classes et n'ont pas de base de données, ils travaillent généralement (effectuer des services) avec d'autres modèles.

Vous trouverez beaucoup d'informations sur la façon de construire des services, par ex. http://sporto.github.io/blog/2012/11/15/a-pattern-for-service-objects-in-rails/. Il y a aussi un excellent Railscast (réservé aux abonnés) http://railscasts.com/episodes/398-service-objects.