Rail Plugin acts_as_taggable_on: через
-
01-10-2019 - |
Вопрос
У меня есть две модели:
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'])
Вы можете расширить, что для выполнения различных подсчетов вы также ищете.