2016-02-10 32 views
1

我正在使用Rails 4.我有一個Room型號,具有hour_priceday_priceweek_price屬性。導軌4 - 按未存儲在數據庫中的東西排序

在索引上,用戶可以輸入他們想要留在房間中的不同時間和日期。根據這些價值,我有一個幫手方法,然後使用上面提到的價格屬性計算總成本。

我的問題是什麼是排序通過rooms最好的方式,並至少排序最大(價格方面)。很難找出實現這一目標的最佳方法,特別是在考慮價格價值時,由助手計算並且不存儲在數據庫中。

+0

如何計算助手的價格?輔助程序中的計算是否基於數據庫中的值?或者可以將這些值存儲在數據庫中? – spickermann

+0

價格根據用戶輸入的時間和日期計算,然後乘以'hour_price'' day_price'或'week_price'(這是,存儲在數據庫中)。例如,如果用戶想要2天的房間,助手將乘以'day_price * 2' @spickermann – Kathan

回答

3

您可以加載所有這些數據,並按suggested herehere進行數組排序。雖然這不會很好地擴展,但如果您已經過濾了可用的房間,這可能就足夠了。

您可以通過構建自定義的SQL順序來將其推回數據庫。

Rooms.order("(#{days} * day_price) asc") 
+2

高級選項是在數據庫端保存一個函數並將其用於查詢中的排序。專業提示Postgres - 爲此查詢添加正確排序方向的功能索引http://www.postgresql.org/docs/current/static/indexes-expressional.html – Semjon

相關問題