我的模型
class Person
embeds_many :skills, class_name: "PersonSkill"
class Project
embeds_many :skills, class_name: "ProjectSkill"
class Skill
belongs_to :tag # Tag class is irrelevant for my question I think
field :tag_name # Assume it's synchronised with tag.name
class PersonSkill < Skill
embedded_in :person
class ProjectSkill < Project
embedded_in :project
现在我需要构建一些查询/范围。这个想法是项目有很多技能,项目经理希望能够找到一个拥有这些技能的人的列表
基本上:几个技能[skillA,skillB,skillC]与项目A相关联。项目经理想找到有能力的人
- 技能A和技能B
- 技能A或技能B
- (技能 A 和技能 B)或(技能 A 和技能 C)
是否可以定义一些不错的 mongoid 范围让我轻松做到这一点?
我看了一下这个问题,我想出了以下范围,但它只涵盖了上面提到的 3 个案例之一。
scope :with_skills, ->(tag_ids){where('competences.tag_id' => {'$in' => tag_ids})}