gpt4 book ai didi

ruby-on-rails - SQL 语句的 Rails 4 作用域

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:47 26 4
gpt4 key购买 nike

我有 3 个模型,PlayerDetailHero。一个Player有很多Details,一个Detail属于一个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

最佳答案

好吧,经过相当长的一段时间后,我终于弄清楚了如何使用示波器获得最常玩的 Heroes

scope :mostplayed, ->(player) { select('details.*, count(heros.id) AS hero_count').joins(:hero).where('player_id = ?', player.id).group('hero_id').order('hero_count DESC').limit(3) }

也许这不是最好的解决方案,但它完全符合我的要求。

关于ruby-on-rails - SQL 语句的 Rails 4 作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18769327/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com