无法在Rails 4中按时间排序ActiveRecord关系

时间:2014-09-09 14:04:43

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

我收到了此查询,并希望通过' delivery_time'来订购结果:

d = Date.today.at_midnight
orders = car.orders.where("finished_at IS NOT NULL AND delivery_time > ?", d).order(delivery_time: :desc)

问题是,订单方法不起作用 - 它仍然按ID排序!无论我在命令方法中加入什么参数似乎都不起作用。

这是我的订单表的部分内容:

  create_table "orders", force: true do |t|
    t.datetime "delivery_time"
    t.datetime "finished_at"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

car.rb:

has_many :orders, -> { order "delivery_time ASC" }

.explain输出:

 SELECT `orders`.* FROM `orders`  WHERE `orders`.`car_id` = 1 AND (finished_at IS NOT NULL AND delivery_time > '2014-09-09 03:00:00')  ORDER BY delivery_time ASC, `orders`.`delivery_time` DESC

1 个答案:

答案 0 :(得分:1)

要覆盖排序,请尝试使用reorder代替order

orders = car.orders.where(
  "finished_at IS NOT NULL AND delivery_time > ?", d
).reorder(delivery_time: :desc)