gpt4 book ai didi

ruby-on-rails - 通过关联的属性值对集合进行排序的数据库查询

转载 作者:行者123 更新时间:2023-12-02 03:43:51 25 4
gpt4 key购买 nike

我想根据关联对象的属性将 :order 过滤器应用于数据库查询。

class Report < ActiveRecord::Base
has_many :keywords
end

class Keyword < ActiveRecord::Base
has_one :score
belongs_to :report
end

class Score < ActiveRecord::Base
belongs_to :keyword
end

这是我提取报告关键字的查询,按关键字的关联分值属性排序。

@keywords = @report.keywords.all(:joins => :score, :order => "scores.value DESC")

它不起作用。它只是以没有特定顺序的方式返回关键字集合。

最佳答案

那是因为您的查询在做两件不同的事情。它根据报告 ID (@report.keywords) 从一个报告中获取所有关键字。那么您正在尝试使用关键字和分数进行连接。
想想 SQL,你想要的是从报告到其他两个表的连接。

SELECT * FROM reports 
JOIN keywords ON reports.id = keywords.id
JOIN scores ON keywords.id = scores.id

要将其转换为 Rails,如果您使用的是它的更新版本,您可以这样做:

@report.keywords.includes(:score).order("scores.value DESC")

老版本的rails很像,不搜索不知道怎么弄。

关于ruby-on-rails - 通过关联的属性值对集合进行排序的数据库查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18364469/

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