获得以下模型
class Document
has_many :document_tag_links
has_many :document_tags, through: :document_tag_links
class DocumentTag
has_many :document_tag_links
has_many :documents, through: :document_tag_links
class DocumentTagLink
belongs_to :document
belongs_to :document_tag
现在,我正在尝试按文档标记与它们关联的文档数量进行排序。我尝试了以下内容:
scope :top10, -> {
joins(:document_tag_links).
select("documents.*, count(document_id) as documents_count").
group("document_id").
order("documents_count desc")
}
但是这给了我以下错误:
ActiveRecord::StatementInvalid:
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "documents"
LINE 1: SELECT documents.*, count(document_id) AS...
^
: SELECT documents.*, count(document_id) AS documents_count FROM "document_tags" INNER JOIN "document_tag_links" ON "document_tag_links"."document_tag_id" = "document_tags"."id" GROUP BY document_id ORDER BY documents_count desc
有人能指出我正确的方向吗?
答案 0 :(得分:2)
在评论中讨论后的解决方案。
scope :top10, -> {
joins(:document_tag_links)
.select("document_tags.*, count(document_id) as documents_count")
.group("document_tags_id")
.order("documents_count desc") }