【问题标题】:Rails 4 - Ordering by something not stored in the databaseRails 4 - 按未存储在数据库中的内容排序
【发布时间】:2016-05-21 10:15:48
【问题描述】:

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

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

我的问题是rooms 进行排序并将它们从最低到最高排序(就价格而言)的最佳方法是什么。很难找出最好的方法来做到这一点,特别是考虑到价格值是由助手计算的,而不是存储在数据库中的。

【问题讨论】:

  • helper中的价格是怎么计算的?助手中的计算是否基于数据库中的值?或者这些值可以存储在数据库中吗?
  • 价格是根据用户输入的时间和日期计算的,然后乘以 hour_price day_priceweek_price (是的,存储在数据库中) .例如,如果用户想要 2 天的房间,助手将乘以 day_price * 2 @spickermann

标签: ruby-on-rails ruby ruby-on-rails-4 helper


【解决方案1】:

您可以像suggested herehere 一样加载所有它们并进行数组排序。虽然这不能很好地扩展,但如果您已经按可用房间进行过滤,这可能就足够了。

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
  • 2015-03-01
  • 1970-01-01
相关资源
最近更新 更多