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.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top