Plugin de ferrocarril acts_as_taggable_on: a través
-
01-10-2019 - |
Pregunta
Tengo dos modelos:
class Employee < ActiveRecord::Base
has_many :projects
end
class Project < ActiveRecord::Base
acts_as_taggable_on :skills, :roles
end
Me gustaría encontrar empleados que usan las etiquetas asociadas a sus proyectos. El Geokit-carriles de soportes plugin de un concepto similar, utilizando su ': a través de'. Relación
Lo ideal es que sería capaz de:
- especificar qué etiquetas (es decir, habilidades, roles) estarían incluidos en las condiciones
- Para los empleados por el número total de proyectos con el tag
- poder acceder a la cuenta de igualación de etiqueta para cada empleado a los efectos de la construcción de una nube de etiquetas
sería apreciada Cualquier pensamiento.
Solución
No estoy seguro de los actos-como-taggable-a tiene soporte para lo que busca directamente. Sin embargo, es posible que pueda conseguir lo que desea saber que el método acts_as_taggable_on añade dos relaciones has_many
a su modelo Project
. Por ejemplo, para encontrar a los empleados donde las habilidades del proyecto tiene algunas etiquetas puede escribir
Employee.all(:joins => {:projects => :taggings}, :conditions => ['taggings.context = ? and taggings.tag_id in (?)', 'skills', [4, 8, 15, 16, 23, 42])
Por supuesto que requiere conocer los identificadores de etiquetas que les interesa, en cambio si tiene los nombres de las etiquetas después
Employee.all(:joins => {:projects => :base_tags}, :conditions => ['taggings.context = ? and tags.name in (?)', 'skills', ['skill_a', 'skill_b', 'skill_c'])
podría ser capaz de expandir ese hacer que los diferentes cargos que usted está buscando también.