Player
、 、Detail
およびの 3 つのモデルがありHero
ます。APlayer
には多くの がありDetails
、 a は aDetail
に属してい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
。