[英]Rails, Arel, Ransack: sort_by sum of relation
class Document
has_many :lines
end
class Line
belongs_to :document
end
sort_by @q, :total
您好,我需要按行总和(行中的金额列)对文档进行排序。
我想到了一个抢劫犯,但如何正确编写呢?
ransacker :total do
parent ???
end
您可能需要考虑计算任何Line
对象的after_create和after_destroy行总数,并将其存储在documents
的line_count
列中。 这将大大加快查询速度,并使数据的布局易于查看。 也可以查看Rails计数器缓存 ,它无需您自己考虑所有回调即可实现此目的。
但是,您也可以通过使用COUNT和GROUP BY来使用抢劫犯。 这是一个快速的:
ransacker :line_count do
query = "(SELECT COUNT(lines.id) FROM lines WHERE lines.document_id = documents.id GROUP BY lines.document_id)"
Arel.sql(query)
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.