named_scope用于相关表中列的总和
我的SQL技能充其量是可笑的,这就是为什么Rails和ActiveRecord让我的生活变得更轻松。然而,这一次,它可能代表了一个拐杖,让我无法理解后端发生了什么,以便知道如何为named_scope提供信息。
我正在尝试返回表格中排名前10的记录,这些记录代表了游戏中得分最高的“演员”。分数通过Actor> Acts> Decsisons.point_value计算
我可以很容易地得到任何一个角色的得分,但是联接和总和高于我的SQL理解,以便将其范围扩展到整个数据库中的前10名。
这是我目前拥有的Actor模型:
class Actor < ActiveRecord::Base
has_many :acts, :dependent => :destroy
has_many :decisions, :through => :acts, :order => 'created_at'
named_scope :high_scores, {
:conditions => {:finished => true},
:joins => "INNER JOIN acts ON actor.id = acts.actor_id INNER JOIN decisions on decision.id = decision.act_id",
:group => 'actor.id',
:select =>'actors.*, SUM(acts.decisions.point_value) AS score',
:order => "score DESC",
:limit => 10
}
end
根据这里和其他一些网站上的一些帖子尝试了一些事情后,我显然没有理解正在发生的事情或者named_scope需要连接的点。一些清晰度将非常值得赞赏。谢谢。
*编辑:将named_scope更新为我目前拥有的内容
这现在给我以下错误:
Mysql ::错误:'字段列表'中的未知列'acts.decisions.point_value':SELECT actors。*,SUM(acts.decisions.point_value)AS得分FROMѭ1INNER JOIN作用于actor.id = acts.actor_id INNER JOIN对decision.id = decision.act_id的决定WHERE(actors
.finished
= 1)GROUP BY actor.id ORDER BY得分DESC LIMIT 10
没有找到相关结果
已邀请:
1 个回复
蕉衫