假設OrderItem.all
會把整個訂單的明細都吐出來,但我們只想找這筆訂單裡面food_name這個欄位的最多出現次數。
想法是可以先將這個欄位的東西,都倒進Array裡面,變成陣列之後相對好處理。
實際方法在Rails 3.2之後,有了更好的method,只需對OrderItem下
array = OrderItem.pluck(:food_name)
其結果就會只將所有food_name都倒進去Array
再來要抓出在陣列裡出現最多次數的Item,就可以用max_by
array.max_by { |i| o.count(i)}
來取得結果。
參考: * Ruby: How to find item in array which has the most occurrences? * How to get a single column’s values into an array * Rails API pluck method