[英]How to query to return the most common foreign key in a join table with rails
我有3個模型。 項目,項目材料和材料
一個項目具有許多ProjectMaterials和許多通過ProjectMaterials創建的材料。
這是雙向的,ProjectMaterial充當具有用戶可提交屬性的聯接表。
我想查詢ProjectMaterial模型以查找material_id的最常用值。 這樣,我可以使用它來查找最常用的材料。
任何查詢的幫助將不勝感激。 我被卡住了。 提前致謝!
一種方法是通過獲取ID來獲取數組,然后計數最頻繁。
ids = ProjectMaterial.pluck[:material_id]
或者更好的是,通過查詢來獲取帶有計數的哈希:
counts = ProjectMaterial.group(:material_id).count
一旦知道您獲得了哈希,就可以通過任何一種紅寶石方法進行排序,選擇頻率最高或頻率最高的n。 排序示例:
counts.sort_by { |_, v| v }
您可以像這樣在ActiveRecord查詢上鏈接group
, count
和sort
方法:
ProjectMaterial.group(:material_id).count.values.sort.last
第一部分ProjectMaterial.group(:material_id).count
為您提供每個{material_id0 => rows_count0, material_id1 => rows_count1, ...}
的哈希值。 然后,您可以只獲取數組中的哈希值,將其排序並獲取最后一項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.