我有两种模式:
class Employee < ActiveRecord::Base
has_many :projects
end
class Project < ActiveRecord::Base
acts_as_taggable_on :skills, :roles
end
我想找到员工使用与他们的项目相关联的标签。 geokit-rails插件使用':through'关系支持类似的概念。
理想情况下,我能够:
任何想法都会受到赞赏。
答案 0 :(得分:1)
我不确定act-as-taggable-on是否支持您直接寻找的内容。但是,您可以知道acts_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'])
您可以扩展它以执行您正在寻找的不同计数。