Mongoid范围:如何检查元素是否在集合中

时间:2016-08-05 02:19:33

标签: ruby-on-rails ruby mongodb mongoid

我有以下课程:

class Team
  ...
  has_many :players
end

class Player
  ...
  field :gender, type: String
  belongs_to :Team
end

我想在课程scope :girl_team中创建一个Team,这样就会让所有至少有一名玩家以“少女”作为性别的球队返回。

我不知道该怎么做。 我试过了:

scope :girl_team, ->{Where('player.gender' => "girl")}  

它似乎不起作用。

1 个答案:

答案 0 :(得分:1)

这需要JOIN。但是,JOIN / MongoDB中没有Mongoid(与SQL / ActiveRecord不同)。但是,如果您Playerembed TeamMongoDB / Mongoid是唯一的/特殊的),那么scope将是:

scope :girl_team, ->{where('players.gender' => "girl")}

另一个解决方案是使用两个查询来获得您想要的内容:

team_ids = Player.where(gender: "girl").distinct(:team_id)
teams = Team.any_in(id: team_ids)