Domanda

Ho due modelli:

class Employee < ActiveRecord::Base
  has_many :projects
end

class Project < ActiveRecord::Base
  acts_as_taggable_on :skills, :roles
end

Mi piacerebbe trovare dipendenti che utilizzano i tag associati ai loro progetti. Il Geokit-rails supporti di plugin un concetto simile, utilizzando il suo ': attraverso'. Rapporto

Idealmente, mi sarebbe in grado di:

  • specificare quali tag (cioè competenze, ruoli) dovrebbe essere incluso nelle condizioni
  • Per i dipendenti per il numero totale di progetti con tags
  • essere in grado di accedere al conteggio corrispondenza-tag per ogni dipendente ai fini della costruzione di una tag cloud

Ogni pensiero sarebbe apprezzato.

È stato utile?

Soluzione

Non sono sicuro gli atti-come-oggetto di tag-on ha il supporto per quello che stai cercando direttamente. Tuttavia, si potrebbe essere in grado di arrivare a quello che vuoi sapere che il metodo acts_as_taggable_on aggiunge due rapporti has_many al vostro modello Project. Ad esempio, per trovare i dipendenti in cui le competenze del progetto ha alcuni tag è possibile scrivere

Employee.all(:joins => {:projects => :taggings}, :conditions => ['taggings.context = ? and taggings.tag_id in (?)', 'skills', [4, 8, 15, 16, 23, 42])

Naturalmente questo richiede la conoscenza gli ID dei tag a cui è interessato, invece se si hanno i nomi delle variabili poi

Employee.all(:joins => {:projects => :base_tags}, :conditions => ['taggings.context = ? and tags.name in (?)', 'skills', ['skill_a', 'skill_b', 'skill_c'])

Si potrebbe essere in grado di espandere che a fare i diversi conteggi che stai cercando pure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top