2014-11-20 35 views
0

我在Rails(4.0.0)項目中使用SmartListing gem和我的Ruby(2.1.2p95)項目來創建ActiveRecord記錄組中的可排序/分頁表,我們稱之爲Orders。每個訂單可以有多個項目,每個項目在其表中都有一個成本字段。我需要能夠按訂單號(訂單表中的字段),訂單數量(訂單模型上的類方法)和總成本(訂單模型上的類方法)進行排序。如何在SmartListing gem中使用實例方法而不是MySQL字段?

是否有一種方法,使用顯式的sort_attributes來調用方法(即order.item_total或order.number_of_items)而不是使用MySQL表中不存在的字段? 'orders'表中沒有'item_totals'列或'number_of_items'列,這兩個調用都是'items'表中的字段/計數的聚合。

@orders = smart_listing_create(:orders, @user.orders, partial: 'orders/order', sort_attributes: [[:id, 'id'],[:item_total, '???'],[:number_of_items, '???']] 

在此先感謝您的幫助,並告訴我是否可以澄清任何問題。

-Dave

回答

0

因此,有沒有什麼辦法做的正是我要問我要求做它(基本上與SQL結合Ruby代碼)的方式。但是,仍然有一個解決方案!由於smart_listing確實支持顯式排序(通過連接列名排序,即[:created_at, 'orders.items.created_at'],如果orders.joins(:items)),您可以簡單地創建一些派生表並使用顯式排序對它們排序。瞧!

相關問題