Rails 4 - 按未存储在数据库中的内容排序

Rails 4 - Ordering by something not stored in the database

我正在使用 Rails 4. 我有一个具有 hour_price day_priceweek_price 属性的 Room 模型。

在索引上,用户可以输入他们希望入住房间的不同时间和日期。基于这些值,我有一个辅助方法,然后使用上面提到的价格属性计算他们将花费的总价。

我的问题是 什么是对 rooms 进行排序并将它们从小到大排序(根据价格)的最佳方法。很难找出最好的方法来做到这一点,尤其是考虑到价格是由助手计算出来的,而不是存储在数据库中的时候。

您可以加​​载所有这些并按原样进行数组排序 suggested here, and here。虽然这不会很好地扩展,但如果您已经按可用房间筛选,这可能就足够了。

您可以通过构建自定义 sql 订单将其推回数据库。

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