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。