我有 3 个模型Player,Detail和Hero。APlayer有很多Details,aDetail属于a Hero。现在我想检索玩家玩过的所有英雄。到目前为止,我想出了这个。
Hero.where("id IN (SELECT hero_id FROM details WHERE player_id = 1)").group("id")
我将如何为它编写一个范围,以便我也可以将 Player 传递给范围?这是我到目前为止得到的,但它只对Details. 我还想数Hero一下,最后我有 x 倍 Hero1,x 倍 Hero2 等等。
scope :heroes, ->(player) { where('player_id = ?', player.id).group("id") }
此范围在Detail模型中。我不知道这是否是最好的地方,因为我希望它返回Heroes而不是返回Details。