铁路插件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插件使用其“:通过”关系支持类似的概念。
理想情况下,我将能够:
- 指定在条件中包括哪些标签(即技能,角色)
- 按照带有匹配标签的项目总数订购员工
- 能够访问每个员工的匹配标签计数,以构建标签云
任何想法都将不胜感激。
解决方案
我不确定Acts-As Taggggable-On是否可以直接寻找您的目标。但是,您可能能够知道知道ACTS_AS_AS_TAGGABLE_ON方法添加两个 has_many
与您的关系 Project
模型。例如,找到项目技能有一些标签的员工,您可以写一些标签
Employee.all(:joins => {:projects => :taggings}, :conditions => ['taggings.context = ? and taggings.tag_id in (?)', 'skills', [4, 8, 15, 16, 23, 42])
当然,这需要知道您感兴趣的标签ID,如果您有标签名称,则
Employee.all(:joins => {:projects => :base_tags}, :conditions => ['taggings.context = ? and tags.name in (?)', 'skills', ['skill_a', 'skill_b', 'skill_c'])
您也许可以将其扩展到您正在寻找的不同计数。
不隶属于 StackOverflow