我正在使用Rails 4.我有一個Room
型號,具有hour_price
day_price
和week_price
屬性。導軌4 - 按未存儲在數據庫中的東西排序
在索引上,用戶可以輸入他們想要留在房間中的不同時間和日期。根據這些價值,我有一個幫手方法,然後使用上面提到的價格屬性計算總成本。
我的問題是什麼是排序通過rooms
最好的方式,並至少排序最大(價格方面)。很難找出實現這一目標的最佳方法,特別是在考慮價格價值時,由助手計算並且不存儲在數據庫中。
我正在使用Rails 4.我有一個Room
型號,具有hour_price
day_price
和week_price
屬性。導軌4 - 按未存儲在數據庫中的東西排序
在索引上,用戶可以輸入他們想要留在房間中的不同時間和日期。根據這些價值,我有一個幫手方法,然後使用上面提到的價格屬性計算總成本。
我的問題是什麼是排序通過rooms
最好的方式,並至少排序最大(價格方面)。很難找出實現這一目標的最佳方法,特別是在考慮價格價值時,由助手計算並且不存儲在數據庫中。
您可以加載所有這些數據,並按suggested here和here進行數組排序。雖然這不會很好地擴展,但如果您已經過濾了可用的房間,這可能就足夠了。
您可以通過構建自定義的SQL順序來將其推回數據庫。
Rooms.order("(#{days} * day_price) asc")
高級選項是在數據庫端保存一個函數並將其用於查詢中的排序。專業提示Postgres - 爲此查詢添加正確排序方向的功能索引http://www.postgresql.org/docs/current/static/indexes-expressional.html – Semjon
如何計算助手的價格?輔助程序中的計算是否基於數據庫中的值?或者可以將這些值存儲在數據庫中? – spickermann
價格根據用戶輸入的時間和日期計算,然後乘以'hour_price'' day_price'或'week_price'(這是,存儲在數據庫中)。例如,如果用戶想要2天的房間,助手將乘以'day_price * 2' @spickermann – Kathan