Вопрос

У меня есть две модели:

class Employee < ActiveRecord::Base
  has_many :projects
end

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

Я хотел бы найти сотрудников, используя теги, связанные со своими проектами. Плагин Geokit-Rails поддерживает аналогичную концепцию, используя ее «: через» отношения.

В идеале я бы мог:

  • Укажите, какие теги (т. Е. Навыки, роли) будут включены в условия
  • Заказать сотрудников по общему количеству проектов с соответствующими тегами
  • Быть в состоянии получить доступ к соответствующему количеству тегов для каждого сотрудника для целей построения облака тегов

Любые мысли будут оценены.

Это было полезно?

Решение

Я не уверен, что акты - as-taggable-On есть поддержка того, что вы ищете напрямую. Тем не менее, вы можете получить то, что вы хотите знать, что метод ACTS_AS_TAGGALE_ON добавляет два has_many Отношения к вашему Project модель. Например, чтобы найти сотрудников, где навыки проекта есть несколько тегов, которые вы можете написать

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

Конечно, что требует знать идентификаторы тегов, которые вас интересуют, вместо этого, если у вас есть имена тегов, то

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

Вы можете расширить, что для выполнения различных подсчетов вы также ищете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top