1

我的模型

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})}
4

0 回答 0