我有以下课程:
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")}
它似乎不起作用。
答案 0 :(得分:1)
这需要JOIN
。但是,JOIN
/ MongoDB
中没有Mongoid
(与SQL
/ ActiveRecord
不同)。但是,如果您Player
中embed Team
(MongoDB
/ 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)