plug-in Rail acts_as_taggable_on: par
-
01-10-2019 - |
Question
J'ai deux modèles:
class Employee < ActiveRecord::Base
has_many :projects
end
class Project < ActiveRecord::Base
acts_as_taggable_on :skills, :roles
end
Je voudrais trouver des employés en utilisant les balises associés à leurs projets. Le greffon Geokit-rails supports un concept similaire, en utilisant son ': par. Rapport
Idéalement, je serais en mesure de:
- spécifier les balises (à savoir les compétences, les rôles) seraient inclus dans les conditions
- pour les employés par le nombre total de projets avec des balises correspondant
- être en mesure d'accéder au comptage marqueur correspondant pour chaque employé aux fins de la construction d'un nuage de tags
Toute pensée serait appréciée.
La solution
Je ne suis pas sûr que les actes-as-tagable-on a un support pour ce que vous recherchez directement. Cependant, vous pourriez être en mesure d'obtenir ce que vous voulez savoir que la méthode acts_as_taggable_on ajoute deux relations has_many
à votre modèle Project
. Par exemple, pour trouver des employés où les compétences du projet a quelques balises que vous pouvez écrire
Employee.all(:joins => {:projects => :taggings}, :conditions => ['taggings.context = ? and taggings.tag_id in (?)', 'skills', [4, 8, 15, 16, 23, 42])
Bien sûr que nécessite de connaître les balises ids qui vous intéressent, au lieu si vous avez les noms de balises puis
Employee.all(:joins => {:projects => :base_tags}, :conditions => ['taggings.context = ? and tags.name in (?)', 'skills', ['skill_a', 'skill_b', 'skill_c'])
Vous pourriez être en mesure d'étendre ce faire les différents chefs d'accusation que vous recherchez aussi bien.